Reactフロントエンドを構築しています。静的クエリのリストから「アクティブ」クエリを選択し、結果をテーブルに表示するために平坦化します。 GraphQLクエリを上位コンポーネントからネストされた子コンポーネントに渡す最も良い方法は何ですか?ApolloクライアントでReactコンポーネントのGraphQLクエリを動的に設定する
私が見たドキュメント/ソリューションの多くは、静的なクエリをコンポーネント状態からコンポーネントに動的にバインドすることに焦点を当てていますが、これはさまざまな静的なクエリがさまざまなフィールドと異なるノードタイプ。
ここでは、ベストプラクティス/推奨アプローチは何ですか?私はこれが非常にユニークなユースケースではないように感じますが、私は似たようなことをする例は見つけられないようです。
私はクライアントサイドストアとしてApollo-Client/Reduxを使用しています。
class GridViewPage extends React.Component{
constructor(props, context) {
super(props, context);
this.state = {
activeQuery = ... Stores the selected query ...
};
}
render() {
return (
<div className="gridContainer">
...Component here allows users to select a query from active list and saves it/it's ID/Index to the state...
<Panel collapsible>
...Some toolbar components...
</Panel>
...Component here displays the result of the query (Ideally by receiving the query or the result of as a prop?)...
</div>
);
}
}
GridViewPage.propTypes = {
grids: PropTypes.array.isRequired,
actions: PropTypes.object.isRequired
};
function mapStateToProps(state, ownProps) {
return {
// Receives list of available queries as a prop
grids: state.grids
};
}
ありがとうございます!このパターンをプロジェクトに適用し始めました。私はそれが最終的にはうまくいくと思っています。私が直面しているエラーの1つは、 'const profileWithDataType = createProfileWithData(graphQLQuery);' は関数型を返すため、 '{this.renderProfileWithData()}'の内部にネストされたときに 'render()'関数にヒットしませんか? これは私のコードの構文上の問題かもしれませんが、言及する価値があると考えられました。 – Mike
ええ、それはJSXの問題かもしれません。私はその構文が有効かどうか常に忘れています。あなたもできる: '' ' 返すReact.createElement(profileWithDataType、{}); '' ' 私はこれで既にこれを解決していると確信していますので、アップデートがうまくいくでしょう:) – advance512
ちょっと!実際には、私はcreateProfileWithData.jsをスキップして、 'graphql(query)(Profile)'に相当するものでPage.jsのページに直接設定しました。 – Mike