Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何更新reducer存储_Javascript_Arrays_Reactjs_Object_React Redux - Fatal编程技术网

Javascript 如何更新reducer存储

Javascript 如何更新reducer存储,javascript,arrays,reactjs,object,react-redux,Javascript,Arrays,Reactjs,Object,React Redux,我有这样的商店 export const list = [ { id: 0, tableName: 'example', tasks: [ { task_id: 0, task_short: 'lorem', task_full: 'lorem ipsum lorem ipsum lorem ipsum',

我有这样的商店

export const list = [
    {
        id: 0,
        tableName: 'example',
        tasks: [
            {
                task_id: 0, 
                task_short: 'lorem',
                task_full: 'lorem ipsum lorem ipsum lorem ipsum',
                time_created: '10:20',
                time_created: null, 
            },
            {
                task_id: 1, 
                task_short: 'andsf',
                task_full: 'lorem ipsum tes tes est',
                time_created: '13:20',
                time_created: null, 
            }
        ]
    }
]
如果我更改表名或使用此减速机添加新表名

import { list } from './list'

export default (state = list, action) => {
    const { type, payload } = action
    switch(type) {
        case 'ADD_TABLE':
            return [...state, payload]
        case 'DELL_TABLE':
            return  state.filter( ( tabl ) => tabl.id != payload )   
        case 'CHANGE_TITLE':
            let basket = state.map( bas => bas.id == payload.id ? bas.tableName = payload.val : bas )
            return [...state]
        case 'ADD_TASK':
            const newer = state.map( tas =>  tas.id == payload.id ? tas.tasks.push(payload.t) : tas)
            return [...state]

        default:
            return state
    }
}
一切都好

但如果我在任务中推送新任务,它将存储在控制台中,但不会呈现

为了使其呈现,我必须更改tableName,并在它全部显示之后

我想问题出在这里了

case 'ADD_TASK':
                const newer = state.map( tas =>  tas.id == payload.id ? tas.tasks.push(payload.t) : tas)
                return [...state]
这是演示

和repo
Array.push()
更改初始数组,这是redux中的反模式

你应该换一行

const newer=state.map(tas=>tas.id==payload.id?tasks.push(payload.t):tas)

在这个问题上

const newer=state.map(tas=>tas.id==payload.id?[…task.tasks,payload.t]:tas)

因此,您不会对初始
task.tasks
数组进行变异


尽量不要在reducer中使用这个列表中的方法,我像你写的那样做了更改,但仍然是一样的:(我理解了这个问题,你把
state.map
的结果保存在
newer
中,但是返回
[…state]
所以试试
返回state.map(tas=>tas.id==payload.id?[…tasks,payload.t]:tas)
TypeError:无法读取未定义TaskItem.render src/components/task/TaskItem.js:11 8 | const{parentID,task}=this.props 9 |//console.log(task)10 |>11 | const TaskItem=task.map(task=>^12 |

{task.task|short}

13})当我使用精灵推动时,它只返回阵列任务,哦,朋友,非常感谢!!!))我爱你。))这是昨天早上卡住的,嗯。。我很高兴=)