Concat 实际上连接而不是添加到数组。反应本机 Javascript
Concat actually concatenates instead of adds to array. React Native Javascript
我是 React Native 和 Javascript 编程的新手,我正在尝试使用 React Native 和 redux 创建一个简单的 'To Do' 应用程序。
我正在尝试将 'To Do' 添加到我的 reducer 中的数组,如下所示。
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 Results
你可以看到 'First Thing' 和 'Second Thing' 是我添加的两个结果,它们连接到同一行。
我的第一个想法是我的 ListView 有问题,它采用如下数据。
<MyList data={this.props.data}/>
所以我尝试了这个...
<MyList data={['firstThing', 'secondThing', 'thirdThing']}/>
它works!!!这就是我认为错误出在减速器中的原因。
请告诉我还有哪些有用的代码。任何见解将不胜感激。
这是动作。
import * as types from './actionTypes.js';
export function addToList(toDoData) {
return {
type: types.ADD,
toDoData: toDoData
};
}
这里有一些关于如何实际 'push' 将数据放入数组的见解
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]
我是 React Native 和 Javascript 编程的新手,我正在尝试使用 React Native 和 redux 创建一个简单的 'To Do' 应用程序。
我正在尝试将 'To Do' 添加到我的 reducer 中的数组,如下所示。
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 Results 你可以看到 'First Thing' 和 'Second Thing' 是我添加的两个结果,它们连接到同一行。
我的第一个想法是我的 ListView 有问题,它采用如下数据。
<MyList data={this.props.data}/>
所以我尝试了这个...
<MyList data={['firstThing', 'secondThing', 'thirdThing']}/>
它works!!!这就是我认为错误出在减速器中的原因。
请告诉我还有哪些有用的代码。任何见解将不胜感激。
这是动作。
import * as types from './actionTypes.js';
export function addToList(toDoData) {
return {
type: types.ADD,
toDoData: toDoData
};
}
这里有一些关于如何实际 'push' 将数据放入数组的见解
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]