我正在使用react和redux创建一个todolist应用程序。但我面临着更新国家的问题。请在下面找到减速机代码:
import { GET_TASKS, GET_TASKS_ERROR } from '../constants';
export function gettasksReducers(state = { tasks: [], getTasksError: {} }, action) {
switch (action.type) {
case GET_TASKS:
return {
tasks: action.payload
}
break;
case GET_TASKS_ERROR:
return {
getTasksError: action.payload
}
break;
case 'UPDATE_TASKS':
console.log('inside the update tasks case---');
return [...state.tasks, action.payload]
break;
}
return state;
}
这里GET_TASKS案例将有效负载分配给状态对象内的tasks数组。但是当我尝试调用同一个reducer中的UPDATE_TASKS时,它会将tasks数组更新为undefined。请在此处找到操作代码:
import axios from 'axios';
import { UPDATE_TASK } from '../constants';
export function updateTask(txtTask) {
return {
'type': UPDATE_TASK,
'payload': txtTask
}
}
export function addTask(txtTask) {
return function (dispatch) {
axios.post('http://localhost:3000/api/tasks', {
name: txtTask
})
.then((response) => {
dispatch({ 'type': 'UPDATE_TASKS', 'payload': response.data });
})
.catch((error) => {
console.log(error);
});
}
}
我在将任务添加到数据库后调用/调度'UPDATE_TASKS'。我是否需要创建另一个reducer来更新状态中的任务?请建议。 感谢
答案 0 :(得分:0)
谢谢Amr, 它在修改为:
之后起作用case 'UPDATE_TASKS':
return {
tasks: [...state.tasks, action.payload]
}
它正在更新任务数组,并在数据库中添加了一个任务对象。 感谢