我有像標題一樣的錯誤。但我不知道我的依賴如何改變每個渲染,因為它在 useEffect 中。我懷疑它與 map 函式有關,所以我將它在層次結構中移到“injectEndpoints”->“transformResponse”,但這沒有幫助。我不知道如何改變它,或者這不是重點?
export const parametersApi = myApi
.injectEndpoints({
endpoints: (builder) => ({
getParameters: builder.query<
ExtendedParameter[],
string
>({
query: (id) =>
`/${id}/parameters`,
providesTags: (_result, _error, id) => [
{
type: `Parameters`,
id: `PLIST_${id}`,
},
],
transformResponse: (response: parameter[]) => {
return response.map((param) => {
return { id: param.name, ...param };
});
},
}),
....
export const {
useGetParametersQuery } = parametersApi;
發生錯誤的檔案:
const selectedParameters =
useGetParametersQuery(master.id, {
skip: !master,
}).data || [];
...
useEffect(() => {
console.log("selectedParameters", selectedParameters);
setParameters(selectedParameters);
}, [selectedParameters]);
console.log("selectedParameters", selectedParameters);
uj5u.com熱心網友回復:
|| []
每次渲染時都會創建一個新陣列,而還沒有.data- 因此selectedParameters將是一個新的參考并useEffect每次都觸發一個。
const EMPTY_ARR = [] 在您的組件之外做一些事情,并 || EMPTY_ARR在此處保持穩定的參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533292.html
下一篇:vueref屬性無法正確推斷型別
