FragmentContainer
에 데이터를로드하려고 Relay Modern을 사용하고 있습니다. 친숙한 Container (Smart)/Presenter (Dumb) 패턴을 사용하고 있으며 예상대로 데이터가 내 하위 컨테이너로 전달되지 않습니다. 그러나 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
가 렌더링 될 때마다, I는 해당 오류를보고 그 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가 데이터로 렌더링되지 않는 이유는 누구입니까?
사용자 기본값으로 defaultValue를 null로 설정 했습니까? –
@IonutAchim 아니요, 아닙니다. – Bibs