問題タブ [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.

0 投票する
0 に答える
56 参照

reactjs - React: useEffect は常に正しい方法ですか?

useEffectが常に正しい方法であるかどうか、私は現在自問自答しています。私の現在のプロジェクトのために、私はそれについて考えています。

あなたが従う必要があると想像してください:

  • queryバックエンドのクエリである状態。クエリも を知っていsortingます。これは、バックエンドからloadQuery構成を取得するメソッドによって埋められます。queryしかし、初期状態は空queryで未定義ではありません。

  • loadDataタイプ のバックエンドからデータをロードするメソッドEntity[]。このメソッドは状態を消費しますqueryqueryこれは、有効なクエリである空のため、直接トリガーできます。

  • loadViewタイプ のバックエンドからビューをロードするメソッドView。Aviewは単なる JSON であり、テーブルのセルを記述し、sortingプロパティを持ちます。

  • loadDataとを呼び出す useEffect loadView。依存関係として、query.

  • ロードされた をリッスンする useEffect 関数view。読み込まれたビューにsortingプロパティがある場合は、query状態を操作します。これにより、上の 1 つのポイントから useEffect が再度トリガーされます。

これが現在のシナリオです (もちろん短縮されています)。私たちも持っています

  • viewに変わりますquery。これにより、データをロードするための useEffect がトリガーされます。
  • テーブルへの無限ロード (これもloadDataオフセットで呼び出されます)、
  • queryユーザーがクエリを変更すると、FilterDialog

データをロードするための useEffect が 3 回連続してトリガーされることがあります。

確かに、一部のデータがすでにロードされているかどうかにかかわらず、ブール値を記憶することで解決できます...しかし、複数の useEffect があるため、これを行うのは困難です。また、ブール値を覚えるのも困難です。なぜなら、componentDidUpdateサイクルが発生した場合、これらのブール値をリセットする必要があるためです。これは、すべてが以前のように実行される必要があるためです。しかし、すべてが非同期であるため、これは問題を引き起こす可能性があります。

たぶん、他の誰かが同じ問題を抱えていて、useEffectsが多すぎて、これが不必要なものにつながり、彼の経験を私と共有することができます:)

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

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

私を助けることができる人に感謝します!