私はreact-boilerplateを使用しています。私は、再選択の使用方法が少し違っていて、再選択がどのように文書化されているかに気付いています。実際、私はフレームワークの開発者が彼らがよりよくやっていることを知っていること、そして彼らのアプローチの理由があることを私が確信しているという事実がない限り、再選択の利点を打ち負かしていると思っていたでしょう。私はその理由をよりよく理解しようとしているので、セレクタを定型文に追加することで前進する方法を知っています。私の混乱は、すでに作成されたセレクタをエクスポートするのではなく、createSelectorを呼び出す反復的なボイラープレートのエクスポートメソッドです。React-boilerplate selector.jsはセレクタを直接エクスポートするのではなく、createSelectorを呼び出すメソッドをエクスポートするのはなぜですか?
再選択のドキュメントには、既に作成されたセレクタをエクスポートするセレクタファイルがあり、次にこれらのセレクタをmapStateToPropsで直接呼び出します。したがって、このような何か:
selector.js:コンポーネントで
export const basicSelector = (state) => (state.basic.data);
export const fooSelector = createSelector(basicSelector, (state) => (state.get(foo));
export const barSelector = createSelector(basicSelector, (state) => (state.get(foo)));
:
function mapStateToProps(state) => ({
foo: fooSelector(state),
bar: barSelector(state),
});
しかし、反応し、定型のセレクタではなく、代わりに直接作成したセレクタをエクスポートするの、createSelectorを呼び出すメソッドをエクスポート。したがって、このような何か:
selector.js:コンポーネントで
export const basicSelector = (state) => (state.basic.data);
export const fooSelector =() => {
return createSelector(basicSelector, (state) => (state.get(foo)));
}
export const barSelector =() => {
return createSelector(basicSelector, (state) => (state.get(foo)));
}
:
const mapStateToProps = createStructuredSelector({
foo: fooSelector(),
bar: barSelector(),
});
セレクタを作成するには、これらのダミーメソッドを呼び出すための動機は何ですか?私は反応型の定型的なアプローチは、異なるコンポーネントのセレクタを再利用すると、各コンポーネントがセレクタの別のインスタンスを持つことになります。状態が変化したときに各コンポーネントがセレクタの結果を計算しなければならないことを意味し、一旦最終的には冗長な計算が行われる。
広く使用されているフレームワークが単に再選択を正しく失敗させることは疑いがあるので、私は何かが欠落していると思うと言いました。誰かが私にメリットを説明することができましたか?そして、なぜ、私が反復的なボイラープレートのアプローチを維持するべきかどうかは、ドキュメンテーションを再選択する方法とそれを行うのですか?
ありがとうございます。私の混乱について詳しく説明するために、私は、小道具がセレクタに渡されることができることを認識していませんでした(これは、処理する方法を理解しようとしていた別の反応の限界を示しているため、セレクタの私の欠陥のある知識(彼らは小道具を取ることができませんでした)のために、私は国家が通話を変えないので工場がどのように役立つか見ていませんでした。私があなたのリンクを見るまで答えは意味をなさないが、私はセレクターがそれをよく理解していることを知っている。また、ファクトリセレクタの命名規則を追加していただきありがとうございます。 – dsollen