Selesaikan masalah gelung tak terhingga yang disebabkan oleh useEffect dalam React
P粉018548441
2023-08-14 18:47:03
<p>Mengapa kod ini menghasilkan gelung tak terhingga dalam React. UseEffect di sini bersama-sama dengan data dan columnDataWithTaskProperty menyebabkan gelung tak terhingga, tetapi saya tidak tahu mengapa</p>
<pre class="brush:php;toolbar:false;">const useBoard = () =>
const { data: columnData } = useGetColumnQuery();
const { data } = useGetTaskAccordingToStatus();
const [columnDataWithTaskProperty, setColumnDataWithTaskProperty] = useState(
[]
);
const [finalState, sFinalState] = useState([]);
useEffect(() => {
const allColumns = columnData?.data?.map((item) => ({
nama: item.name,
_id: item._id,
tugas: [],
}));
setColumnDataWithTaskProperty(allColumns);
}, [columnData]);
useEffect(() => {
console.log("meeee data deps");
const updatedColumns = columnDataWithTaskProperty.map((column) => ({
...kolum,
tugasan: data.flat().filter((tugas) => task.status === column.name),
}));
sFinalState(updatedColumns);
}, [columnDataWithTaskProperty, data]);
kembali {
negeri akhir,
};
};</pre>
<p>Berikut ialah cara saya menggunakan useGetTaskAccordingToStatus untuk mendapatkan data. Saya menggunakan React Query untuk mendapatkan data. </p>
<pre class="brush:php;toolbar:false;">const useGetTaskAccordingToStatus = () =>
const {projek_aktif} = useSelector(projectDataInStore);
const userQueries = useQueries({
pertanyaan: statesOfTaskManager.map((status) => {
kembali {
queryKey: [status, active_project],
queryFn: () =>
customAxiosRequestForGet("/task", {
status,
Nama projek: active_project,
}),
onSuccess: ({ data }) =>
mengembalikan data;
},
};
}),
});
data const = userQueries?.map((item) => item?.data?.data);
pulangkan { data };
};</pre>
<p><br /></p>
Saya cadangkan anda hanya menggunakan kesan penggunaan dan alih keluar columnDataWithTaskProperty untuk menguji sack, anda boleh kembali kepadanya kemudian. Ini adalah contoh cadangan saya, tetapi tidak boleh diuji tanpa data sebenar.