フラグメント構成を正しく動作させる方法を理解するのに苦労しています。私は必要な断片を含むルート<QueryRenderer />
を持っています。フラグメントがマージされ、クエリが必要なすべてのデータを返すことがわかります。データは私のページにメインのレンダリングノードに渡されたが、これは、子ノードに渡されたときにリレーが文句をされていますRelay Modernのフラグメント構成を動作させるにはどうすればよいですか?
Warning: RelayModernSelector: Expected object to contain data for fragment `BoardControlsComponent_processMeta`, got `{"item": 1, "name": "Test"}`. Make sure that the parent operation/fragment included fragment `...BoardControlsComponent_processMeta`.
コード:
export let BoardContainer = createFragmentContainer(BoardComponent, {
processMeta: NavbarFragment.processMeta,
});
export const Board = ({match}) => {
return (<QueryRenderer
environment={environment}
variables={{
processId: match.params.processId,
boardType: match.params.boardType,
boardClass: match.params.boardClass
}}
query={BoardDataQuery}
render={({error, props}) => {
if (error) {
return <div>{error.message}</div>;
} else if (props) {
//console.log(props);
return (<BoardContainer {...props} match={match}/>);
}
return <ProgressBar active now={100} />;
}}
/>
);
};
をレンダリング()BoardComponentのでは:
<BoardControlsContainer processMeta={this.props.processMeta} />
BoardDataQuery:
export const BoardDataQuery = graphql`
query BoardDataQuery($processId: Int!, $boardClass: String!, $boardType: String!) {
processMeta(processId: $processId, boardClass: $boardClass, boardType: $boardType) {
...NavbarComponent_processMeta
...BoardControlsComponent_processMeta
}
}
`;
BoardControlsContainer:
export const BoardControlsContainer = createFragmentContainer(BoardControlsComponent, {
processMeta: BoardControlsFragment.processMeta
});
のでBoardDataQueryは、2つのコンポーネントのProcessMetaフィールドが含まれており、ブラウザでネットワークのデバッグコンソールをチェックすることが要求されるように、すべてのデータが戻って来て確認します。このデータをプロップとして渡すと、Relayは、オブジェクトが挿入されているのではなく、フラグメントを予期していると不満を持ちます。それだけでなく、渡される実際のオブジェクトには、指定された余分なフィールドがありません。
私はここで間違っていますか?