問題タブ [react-usememo]
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.
reactjs - React: useEffect は常に正しい方法ですか?
useEffectが常に正しい方法であるかどうか、私は現在自問自答しています。私の現在のプロジェクトのために、私はそれについて考えています。
あなたが従う必要があると想像してください:
query
バックエンドのクエリである状態。クエリも を知っていsorting
ます。これは、バックエンドからloadQuery
構成を取得するメソッドによって埋められます。query
しかし、初期状態は空query
で未定義ではありません。loadData
タイプ のバックエンドからデータをロードするメソッドEntity[]
。このメソッドは状態を消費しますquery
。query
これは、有効なクエリである空のため、直接トリガーできます。loadView
タイプ のバックエンドからビューをロードするメソッドView
。Aview
は単なる JSON であり、テーブルのセルを記述し、sorting
プロパティを持ちます。loadData
とを呼び出す useEffectloadView
。依存関係として、query
.ロードされた をリッスンする useEffect 関数
view
。読み込まれたビューにsorting
プロパティがある場合は、query
状態を操作します。これにより、上の 1 つのポイントから useEffect が再度トリガーされます。
これが現在のシナリオです (もちろん短縮されています)。私たちも持っています
view
に変わりますquery
。これにより、データをロードするための useEffect がトリガーされます。- テーブルへの無限ロード (これも
loadData
オフセットで呼び出されます)、 query
ユーザーがクエリを変更すると、FilterDialog
データをロードするための useEffect が 3 回連続してトリガーされることがあります。
確かに、一部のデータがすでにロードされているかどうかにかかわらず、ブール値を記憶することで解決できます...しかし、複数の useEffect があるため、これを行うのは困難です。また、ブール値を覚えるのも困難です。なぜなら、componentDidUpdate
サイクルが発生した場合、これらのブール値をリセットする必要があるためです。これは、すべてが以前のように実行される必要があるためです。しかし、すべてが非同期であるため、これは問題を引き起こす可能性があります。
たぶん、他の誰かが同じ問題を抱えていて、useEffectsが多すぎて、これが不必要なものにつながり、彼の経験を私と共有することができます:)
react-native - React.memo を使用しても FlatList アイテムが再レンダリングされる
FlatListコンポーネントを使用してReact Nativeでアイテムのリストをレンダリングしようとしていますが、新しいデータを取得するたびに、React.memoを使用してもアイテムのwhoリストを再レンダリングします。
私のコードは次のようになります。
Component.js
関数がトリガーされて loadMore 関数が呼び出されるたびonEndReached
に、すべての FlatList アイテムが再レンダリングされ、毎回 console.log 'レンダリング中' になり、エラーが発生します。virtualizedlist you have a large list that is slow to update
私を助けることができる人に感謝します!