私はFragmentContainer
にデータをロードしようとするためにRelay Modernを使用しています。私はおなじみのコンテナ(スマート)/プレゼンター(ダム)パターンを使用していますが、データは期待通りに子コンテナに渡されません。しかし、Relayの@relay(mask: false)
指示文を使用して、フラグメントのデータがQueryRenderer
によって正しくロードされているかどうかを確認すると、のフラグメントデータはになります。Relay-Modern FragmentContainerデータが入力されていません
データがコンテナに送信されない理由を理解できません。どんな助けでも大歓迎です。
ScreenContainer.js
(QueryRenderer
をレンダリング):
/* ScreenContainer.js */
import ScreenPresenter from './ScreenPreseenter';
const query = graphql`
query ScreenContainerQuery($id: ID!) {
viewer {
User(id: $id) {
id
...NestedFragmentContainer_user
}
}
}`
export default class ScreenContainer extends Component {
render() {
<QueryRenderer
query={query}
variables={{id: id}}
render={() => <ScreenPresenter />}
/>
}
}
ScreenPresenter.js
:
/* ScreenPresenter.js */
import NestedFragmentContainer from './NestedFragment';
export default class ScreenPresenter extends Component {
render() {
return <NestedFragmentContainer />
}
}
そして最後に、NestedFragmentContainer.js
:
/* ./NestedFragmentContainer.js */
class NestedFragmentContainer extends Component {
render() {
const { user } = this.props;
console.log(user); // <-- Always null, not undefined
return <Text>{user.account.name}</Text>;
}
}
export default createFragmentContainer(
NestedFragmentContainer,
graphql`
fragment NestedFragmentContainer_user on User {
account {
name
}
}
`
、NestedFragmentContainer
のレンダリング時はいつでも、私はそのエラーを参照してくださいuser
小道具はundefined
です。しかし、console.log()
は、その値が実際にnull
であり、undefined
ではないことを示しています。
Warning: createFragmentContainerSpecResolver: Expected prop `user`
to be supplied to Relay(NestedFragmentContainer)`, but got
`undefined`. Pass an explicit `null` if this is intentional.
なぜFragmentContainerがそのデータでレンダリングされないのですか?
user propにnullを設定していますか? –
@IonutAchimいいえ、私はしません。 – Bibs