Javascript 待办事项清单反应&x2B;重演

Javascript 待办事项清单反应&x2B;重演,javascript,reactjs,redux,Javascript,Reactjs,Redux,如何在编辑状态下选择“假”变为“真”(或完全相反) [看起来您的帖子大部分是代码;请添加更多详细信息。看起来您的帖子大部分是代码;请添加更多详细信息。] import React from 'react' import shortid from 'shortid'; const ADD_TASK = 'ADD_TASK' const EDIT_STATUS = 'EDIT_STATUS' const TASK_DELETE = 'TASK_DELETE' const initialState

如何在编辑状态下选择“假”变为“真”(或完全相反)

[看起来您的帖子大部分是代码;请添加更多详细信息。看起来您的帖子大部分是代码;请添加更多详细信息。]

import React from 'react'
import shortid from 'shortid';

const ADD_TASK = 'ADD_TASK'
const EDIT_STATUS = 'EDIT_STATUS'
const TASK_DELETE = 'TASK_DELETE'

const initialState = {
    tasks: []
};


const mainReducer = (state = initialState, action) => {
    switch (action.type) {
        case ADD_TASK: {

            return {
                ...state,
                tasks: [{
                    id: shortid.generate(),
                    task: action.task,
                    status: false
                }, ...state.tasks]

            }

        }

        case EDIT_STATUS: {
            return {

            }
        }


    default:
        return state
    }
}

export const addTask = task => ({type: 'ADD_TASK', task});
export const editStatus = id => ({type: 'EDIT_STATUS', id})



export default mainReducer;




有几种方法可以做到这一点,但看起来您需要在reducer中搜索逻辑以使此功能正常工作



虽然我不清楚是否完全实施。根据这个问题,我假设您想要在“编辑状态”操作的有效负载中提供的任务id的“真”和“假”之间切换任务的状态。据我所知,下面的代码可能是一个可能的实现

case EDIT_STATUS: {
       return {
           ...state,
           tasks: tasks.map(task => {
              if(task.id == action.id) {
                 task.status = !task.status
              }
              return task
           })
       }
 }

如何选择身份***
return {
    ... state, 
    tasks: state.tasks.map(t => (t.id === action.id
        ? {
           ...t,
            status: !t.status,
        } : t)), 
};
case EDIT_STATUS: {
       return {
           ...state,
           tasks: tasks.map(task => {
              if(task.id == action.id) {
                 task.status = !task.status
              }
              return task
           })
       }
 }