首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >剩余待办事项列表

剩余待办事项列表
EN

Stack Overflow用户
提问于 2016-03-09 16:05:00
回答 1查看 304关注 0票数 3

我正在使用redux做待办事项列表,我想为每个待办事项添加子待办事项列表,但我不明白为什么我的减速机线不能工作(见上面),您能帮我吗?

代码语言:javascript
复制
import { combineReducers } from 'redux'
import { ADD_TODO, TOGGLE_TODO, ADD_SUB_TODO} from '../constants/ActionTypes'
import _ from 'lodash'

const initialState = {
    todos : []
}

export function todo(state, action) {
    switch (action.type) {
        case  ADD_TODO:
            return {
                id: action.id,
                text: action.text,
                completed: false
            };
        default:
            return state;
    }
}


export function allTodo (state = initialState, action) {
    switch (action.type) {
        case  ADD_TODO:
            return {
                ...state,
                todos: [
                    ...state.todos,
                    {
                        id: action.id,
                        text: action.text,
                        completed: false,
                        subtodo:[]
                    }
                ]
            };
        case ADD_SUB_TODO:
            console.log("REDUCER")
            console.log(...state.todos)
            return {
                ...state,
        // THIS LINE DOES'NT WORK :
                ...state.todos[0].subtodo: [ ...state.todos[0].subtodo, {
                    id: action.id,
                    text: action.text
                }]
            };
        default:
            return state;
    }
};

export default combineReducers({
    allTodo
})

这条线不起作用:

代码语言:javascript
复制
...state.todos[0].subtodo: [ ...state.todos[0].subtodo, {
                        id: action.id,
                        text: action.text
                    }]

这是我的sub对象

代码语言:javascript
复制
{
 id: action.id,
 text: action.text
}
EN

回答 1

Stack Overflow用户

发布于 2016-03-10 16:07:44

感谢疯狂的袋熊,这是最后的代码:

代码语言:javascript
复制
case ADD_SUB_TODO:

                let subtodo = {id: action.id, text: action.text}
                let subtodoList = _.concat(...state.todos[action.parentId].subtodo, subtodo)
                let todo = _.assign({}, state.todos[action.parentId], {subtodo: subtodoList})

                return {
                    ...state,
                    ...state.todos[action.parentId] = todo,
                    todos: [
                        ...state.todos
                    ]
                };
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35896639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档