我有一個復選框組件,當為復選框選擇一個值時,我想用 true 和 false 值更新我的狀態。我總共有 5 個不同的狀態。我無法從我的狀態更新單個物件。有人可以幫忙嗎?
在我設定值后,當前實作 quizState 變為 undefined
我的減速器看起來像這樣:
quizState: [
{id:0, question_id: '', answer: [] },
{id:1, question_id: '', answer: [] },
{id:2, question_id: '', answer: [] },
{id:3, question_id: '', answer: [] },
{id:4, question_id: '', answer: [] },
],
export const appReducer = (state = appState, action) => {
const { type, payload } = action;
switch (type) {
case SET_QUIZ_STATE:
return state.quizState.map((quiz) => quiz.id === payload.id ? ({...quiz, payload}) : quiz)
default:
return state;
}};
我有一個鉤子:
const setQuizState = useCallback(
(quizState) => dispatch({ type: SET_QUIZ_STATE, payload: quizState }),
[dispatch]
);
在組件中,在更改事件上:
setQuizState({ id: 0, question_id: question.question_id, answers: [true, false] });
uj5u.com熱心網友回復:
您只回傳需要quizState整體的子欄位state。像下面這樣改變你的減速機:
export const appReducer = (state = appState, action) => {
const { type, payload } = action;
switch (type) {
case SET_QUIZ_STATE:
return {
...state,
quizState: state.quizState.map(prevState => {
if(prevState.id !== payload.id) return prevState;
return {
...prevState,
...payload
}
})
};
default:
return state;
}
};
并且這個答案假設payloadobject 兼容作為quizState陣列中的一個元素。我認為您在放置的 onChange 事件中有一個錯字answers,而不是answer您的有效負載。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/370042.html
標籤:javascript 反应 反应钩子 使用减速器
上一篇:如何從reactJS中的firebase存盤桶檔案夾查看所有影像
下一篇:從Reduce獲取總價值的總和
