我有一個使用 Redux 的 React Native 應用程式。
我希望能夠在此專案串列的開頭添加一個條目,但它不起作用。
下面提供的部分代碼。
這是我得到的錯誤:
TypeError:未定義不是物件(評估“projects.list.push”)
我沒有在這里顯示正確的語法??
提前致謝。
initialState: {
list: [],
loading: false,
lastFetch: null,
},
export const getPickerList = createSelector(
(state) => state.entities.projects,
(projects) => projects.list.push({ project_id: 0, project_name: "[All]" }),
(projects) =>
projects.list.filter((project) => ({
project_id: project.project_id,
project_name: project.project_name,
}))
);
uj5u.com熱心網友回復:
我認為您實際上想要這樣做:
export const getPickerList = createSelector(
(state) => state.entities.projects,
(projects) => {
const projectsWithPrefix = [
{ project_id: 0, project_name: "[All]" },
...projects
];
// you could filter here as well before returning
return projectsWithPrefix
}
);
但老實說,我不知道你在那里嘗試了什么.filter。
一般來說,你不能像你想的那樣“連鎖”。除最后一個函式外,所有函式的所有回傳值都作為引數傳遞給最后一個函式,而不是下一個函式。
uj5u.com熱心網友回復:
你這里有兩個錯誤,另外我認為還有一個概念問題。
首先是您正在projects.list通過呼叫projects.list.push(). 使用 Redux 時絕對不能改變狀態。
第二個問題是所有輸入選擇器都使用相同的引數呼叫。所以,如果你呼叫selectSomeThing(state, "a', 42),所有輸入選擇器都會被呼叫state, "a", 42。
這意味著第二個輸入選擇器的第一個引數實際上是state,而不是projects。
另一個問題是選擇器不是“添加”任何東西的正確位置。這聽起來像是狀態更新,所有狀態更新都必須發生在 reducer 中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/469243.html
