Redux更新状态而不再次初始化状态值

时间:2017-09-10 05:44:28

标签: reactjs react-redux

我正在使用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来更新状态中的任务?请建议。 感谢

1 个答案:

答案 0 :(得分:0)

谢谢Amr, 它在修改为:

之后起作用
case 'UPDATE_TASKS':
    return {
        tasks: [...state.tasks, action.payload]
    }

它正在更新任务数组,并在数据库中添加了一个任务对象。 感谢