我正在使用 Relay Modern 尝试将数据加载到FragmentContainer
. 我正在使用熟悉的 Container (Smart) / Presenter (Dumb) 模式,并且数据没有按预期传递到我的子 Container 中。但是,如果我使用 Relay 的@relay(mask: false)
指令来查看片段的数据是否被正确加载QueryRenderer
,那么片段数据就在那里。
我不明白为什么没有将数据发送到我的容器。任何帮助深表感谢。
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
prop 为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 没有用它的数据呈现?