Ich verwende Relay Modern, um zu versuchen, Daten in eine FragmentContainer
zu laden. Ich verwende das vertraute Container (Smart)/Presenter (Dumb) -Muster und die Daten werden nicht wie erwartet in meinen untergeordneten Container übergeben. Wenn ich jedoch die Anweisung von Relay verwende, um festzustellen, ob die Daten des Fragments korrekt geladen sind, durch QueryRenderer
, , sind die Fragmentdaten dort.Relay-Modern FragmentContainer-Daten nicht belegt
Ich verstehe nicht, warum die Daten nicht an meinen Container gesendet werden. Jede Hilfe wird sehr geschätzt.
ScreenContainer.js
(rendert 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 />
}
}
Und schließlich 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
}
}
`
Außerdem, wenn NestedFragmentContainer
macht, ich einen Fehler zu sehen, dass seine user
Prop ist undefined
. Jedoch zeigt console.log()
, dass sein Wert tatsächlich null
ist und nicht undefined
.
Warning: createFragmentContainerSpecResolver: Expected prop `user`
to be supplied to Relay(NestedFragmentContainer)`, but got
`undefined`. Pass an explicit `null` if this is intentional.
Hat jemand eine Idee, warum der FragmentContainer nicht mit seinen Daten gerendert wird?
Haben Sie einen defaultValue als null für Benutzer-Prop gesetzt? –
@IonutAchim Nein, tue ich nicht. – Bibs