Concat实际上是连接的,而不是添加到数组中.反应本机JavaScript



im新手对本机和javaScript编程的新手,并试图创建一个简单的'to to to'to在react and react和redux中。

我试图在我的还原器中的阵列中添加一个"要做",如下所示。

import * as types from '../actions/actionTypes'
const initialState = {
    data: []
};
export default function toDo(state = initialState, action) {
    let list
    console.log(action + " action")
    switch (action.type) {
        case types.ADD:
        list = state.data.concat([action.toDoData])
            return {
                ...state,
                data: list || []
            }
        default:
             return state;
    }
}

结果显示addtodo结果您可以看到"第一件事"one_answers"第二件事"是我的两个添加结果,它们会在同一行上进行。

我的第一个想法是,我的愚蠢或介绍listView出了问题,将其如下所示。

<MyList data={this.props.data}/>

所以我尝试了...

<MyList data={['firstThing', 'secondThing', 'thirdThing']}/>

它有效!!!这就是我认为错误在还原器中的原因。

请让我知道其他代码将有用。任何见解都将不胜感激。

这是动作。

import * as types from './actionTypes.js';
export function addToList(toDoData) {
    return {
        type: types.ADD,
        toDoData: toDoData
    };
}

以下是您如何将数据推入数组

的一些见解
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi");
//fruits = ["Banana", "Orange", "Apple", "Mango", "Kiwi"];

或者您只能

export default function toDo(state = initialState, action) {
  switch (action.type) {
    case types.ADD:
      return {
        data: [...state.data, action.toDoData]
      }
    default:
      return state;
  }
}

您想要数组扩展运算符,即

export default function toDo(state = initialState, action) {
  switch (action.type) {
    case types.ADD:
      return {
        data: [...state.data, action.toDoData]
      }
    default:
      return state;
  }
}

您的动作是一个数组吗?如果是,那应该是

state.data.concat(action.tododata)

我认为,以某种方式,您将字符串添加到state.data ...尝试这样的事情: list = state.data.concat(action.toDoData)
或ES6传播:
list = [...state.data, action.toDodata]

最新更新