ReactのuseEffectによる無限ループの問題を解決
P粉018548441
P粉018548441 2023-08-14 18:47:03
0
1
445
<p>このコードは React で無限ループを生成するのはなぜですか。ここの useEffect と data および columnDataWithTaskProperty は無限ループを引き起こしますが、なぜ </p> が発生するのかわかりません。 <pre class="brush:php;toolbar:false;">const useBoard = () => { const { データ: 列データ } = useGetColumnQuery(); const { データ } = useGetTaskAccordingToStatus(); const [columnDataWithTaskProperty, setColumnDataWithTaskProperty] = useState( [] ); const [finalState, sFinalState] = useState([]); useEffect(() => { const allColumns = columnData?.data?.map((item) => ({ 名前: item.name、 _id: item._id、 タスク: []、 })); setColumnDataWithTaskProperty(allColumns); }, [列データ]); useEffect(() => { console.log("meeee データ デプス"); const updatedColumns = columnDataWithTaskProperty.map((column) => ({ ...カラム、 タスク: data. flat().filter((task) => task.status === column.name)、 })); sFinalState(updatedColumns); }, [columnDataWithTaskProperty, データ]); 戻る { 最終状態、 }; };</pre> <p>ここでは、useGetTaskAccordingToStatus を使用してデータを取得する方法を示します。 React Queryを使用してデータを取得しました。 </p> <pre class="brush:php;toolbar:false;">const useGetTaskAccordingToStatus = () => { const { active_project } = useSelector(projectDataInStore); const userQueries = useQueries({ クエリ: statesOfTaskManager.map((ステータス) => { 戻る { queryKey: [ステータス、アクティブなプロジェクト]、 queryFn: () => CustomAxiosRequestForGet("/タスク", { 状態、 プロジェクト名: active_project、 })、 onSuccess: ({ データ }) => { データを返す。 }、 }; })、 }); const data = userQueries?.map((item) => item?.data?.data); {データ}を返します。 };</pre> <p><br /></p>
P粉018548441
P粉018548441

全員に返信(1)
P粉574695215

use エフェクトを使用して、columnDataWithTaskProperty を削除してサックをテストすることをお勧めします。後で返すことができます。 これは私の提案の一例ですが、実際のデータがなければテストできません。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート