尝试创建一个非常简单的redux todo,几乎就在那里,但却陷入了困境。
export const completeTodo = (todo) => ({
type: 'COMPLETE_TODO',
data: {
name: todo,
complete: !todo.complete
}
})
但是,努力让减速器工作,因为我无法确定如何确定我正在使用的确切对象
减速器:
case 'COMPLETE_TODO': {
const chore = { ...state.chores, complete: action.data.complete}
return { ...state.chores, chore };
}
和initialState是:
const initialState = {
chores: [{name: 'cleaning', complete: false}]
}
显然,当我点击我的按钮时,应该连线,这样它可以将完整的布尔值更改为相反但仅适用于那个todo
答案 0 :(得分:1)
由于您有阵列,因此需要将其替换为新阵列
case 'COMPLETE_TODO': {
return {
...state,
chores: state.chores.map(chore =>
chore.name === action.data.name
? {...chore, complete: true /* or !chore.complete if you want toggle like behaviour*/}
: chore)
};
}
并在您的动作创建者中
export const completeTodo = (todo) => ({
type: 'COMPLETE_TODO',
data: {
name: todo.name // assumning names are unique
}
})