Im新的反應本機和Javascript編程一般,我試圖創建一個簡單的'待辦'應用程序與在React本機和REDX。Concat實際上連接而不是添加到數組。反應本地的JavaScript
我試圖添加'待辦事項'到我的減速器中的數組,如下所示。
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 你可以看到「第一件事」和「第二件事」是我的兩個新增的結果,他們Concat的到同一行。
我的第一個想法是,我的啞巴或表象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
};
}
僅供參考,你應該總是使用分號。可能會有一些相當醜陋的錯誤。 – 4castle
您的代碼看起來不錯,只需修改console.log並添加更多的代碼即可找到問題。他們應該看起來像這樣:'console.log('action',action);'(逗號而不是加號) –
與你的答案並不真正相關,但我會在你的reducer中使用Immutable。當然你不必這樣做,但是如果沒有它,我會遇到一些關於對象引用的討厭的錯誤。不可變類型的方法也將極大地幫助您操作數據結構! – stinodes