問題タブ [reselect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
6183 参照

redux - オブジェクトが同じ場合、変更リストで再選択を使用する方法は?

reselect を使用して、redux 状態の一部を取得します。私は自分の状態にあるオブジェクトのリストを持っています。作成セレクターのサブセレクターの 1 つは、このリストのフィルター関数です。

だから私はこれを私のcreateSelectorに渡します:

このフィルター関数は、リスト内のオブジェクトのサブセットを返します。したがって、リストが変更された場合、リストが同じではない (完全に正しい) ため、サブセットが変更されていなくても、reselect は常に新しいオブジェクトを返します。

オブジェクトまたはフィルタリングされたリストに変更がある場合、新しいオブジェクトのみを取得する可能性はありますか?

0 投票する
1 に答える
698 参照

reactjs - 生データをフェッチした後、react-redux アプリのどこで生データを解析できますか?

サーバーから生データを取得した後、コンポーネントでレンダリングする前にデータを解析する必要があります。

では、データを解析するコードをどこに配置すればよいでしょうか? レデューサーまたはアクションで?レデューサーに入れればいいと思うのですが、それでいいのでしょうか?

0 投票する
3 に答える
1995 参照

reactjs - immutable-js で redux を使用する場合 - セレクターで toJS() を呼び出しますか? または、レンダー関数で .get('prop') を使用しますか?

現在reselect、セレクターを作成してストアからデータを抽出し、それをpropsviaに渡していconnectます。簡単にするために、私のセレクターの結果は常に JS オブジェクト (toJS()セレクターの最後で呼び出す) であり、次のようになります。

今、私はいくつかのパフォーマンスを改善しようとしていますshouldComponentUpdateが、セレクターから戻る方法のために、浅い比較では不変性の利点が失われることに気付きました。

一方、.get('prop')私のhtml内で使用するのは非常に面倒です:

特に、単純な JS オブジェクトを変更可能な子コンポーネントに渡す場合は、次のようになります。

また、小道具にアクセスするときに一貫性がありません (一部は変更可能で、一部は不変です)。

unwrap次のようなヘルパー関数を作成することを考えました。

しかし、私はこの解決策があまり好きではありません..私はこれらのアプローチのどれも本当に好きではありません.

クリーンなコードとパフォーマンスの両方のために何を使用していますか?

0 投票する
1 に答える
261 参照

reactjs - 反応する Redux で app を構造化して状態アトムからコンポーネントを切り離す方法

redux アプリでは、connect を使用して状態からデータを取得する方法が適しています。問題は、コンポーネントを状態アトムと密接に結合していることです。状態ツリーの構造を変更したい場合、そのような状態を使用していたすべてのコンポーネントが壊れます。

では、それらを切り離す方法は?

この単純な状態では、2 人のユーザーと 2 つの投稿があり、両方の投稿が両方のユーザーに表示されることを説明しています。

投稿とユーザーを一覧表示するコンポーネントでは、接続を行うことができます

ここでの問題は、正しいデータをレンダリングするために、コンポーネントのレンダリング関数が状態を操作することです。私が何かをすることができれば、それははるかに良いでしょう

状態を処理するようなオブジェクトを作成し、コンポーネントと接続機能が情報を得るために連絡する API を公開するにはどうすればよいですか。

私は再選択についてたくさん読みましたが、それを実装する方法は?