Concat实际上是连接而不是添加到数组中。反应本机Javascript
我对react Native和Javascript编程基本上是新手,我试图用react Native和redux创建一个简单的“待办”应用程序 我试图在我的reducer中的数组中添加一个“to Do”,如下所示Concat实际上是连接而不是添加到数组中。反应本机Javascript,javascript,react-native,redux,react-native-listview,Javascript,React Native,Redux,React Native Listview,我对react Native和Javascript编程基本上是新手,我试图用react Native和redux创建一个简单的“待办”应用程序 我试图在我的reducer中的数组中添加一个“to Do”,如下所示 import * as types from '../actions/actionTypes' const initialState = { data: [] }; export default function toDo(state = initialState, act
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;
}
}
结果表明
您可以看到“第一件事”和“第二件事”是我添加的两个结果,它们合并到同一行
我的第一个想法是,我的愚蠢的或呈现式的ListView出现了一些问题,它采用了如下数据
<MyList data={this.props.data}/>
下面是一些关于如何将数据“推送”到阵列中的见解
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;
}
}
您的action.toDoData是数组吗?如果是,那么应该是 state.data.concat(action.toDoData)
我想不知怎么的,在你的第一个循环中,你在state.data中添加了字符串。。。 试着这样做:
list=state.data.concat(action.toDoData)
或使用ES6排列:
list=[…state.data,action.toDodata]
仅供参考,您应该始终使用分号。可能会有一些非常难看的bug。您的代码看起来不错,只需修复console.log并添加更多的bug即可发现问题。它们应该是这样的:console.log('action',action)代码>(逗号而不是加号)与您的答案不太相关,但我会在您的减缩器中使用Immutable。当然你不必这么做,但是我遇到了一些关于没有它的对象引用的讨厌的bug。不可变类型的方法也将极大地帮助您操纵数据结构!我认为目标是不可变的Javascript,但不是吗?您仍然可以使用spread操作符并同时推送数组:)不是,它只是字符串输入。四、用行动编辑问题。
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;
}
}