2016-01-27 21 views
0

我有一個json文件,其中包含一系列Todos,我想將其渲染爲初始狀態,調用我的還原器type: 'ADD_TODO'。哪裏是更好地循環,dispatch動作:循環調度Redux中的還原器

是更好地在組成部分循環,增加每單待辦事項,如:

myInitialTodos.forEach(
    (todo, id) => store.dispatch({ 
    type: 'ADD_TODO', 
    id 
    }) 
) 

或其他reducer由具有ADD_TODO,如:

store.dispatch({ 
    type: 'ADD_TODOS', 
    todos: myInitialTodos 
}) 

在這兩種情況下,啓動時爲componentDidMount(例如)。

也許(最可能)還有另一種更好的方法。

感謝,

+0

todos從哪裏來?將它們從componentDidMount移動到初始縮減器狀態會更好嗎? – Mike

+0

感謝邁克,他們可能來自'ajax'請求例如(不是靜態的) –

+0

啊,是否有可能發送JSON數據與來自服務器的初始請求並將數據引導到Redux? – Mike

回答

2

它肯定更好添加ADD_TODOS的單獨行動類型,並通過待辦事項的陣列,以你的減速。如果您考慮最終爲反應應用程序添加後端,那麼您不希望發出一堆API調用來添加多個待辦事項,而只想發送一個網絡請求。

編輯:另外,如果你總是想要添加相同的todos列表到你的應用程序啓動,更好的方法是把它們放到初始狀態,你傳遞給你的reducer,所以像這樣可以做的伎倆:

const initialState = [{title: 'A sample todo', completed: false},{title: 'Another sample todo', completed: false}] 

const todos = (state = initialState, action) => { //Reducer logic } 
+0

您也可以使用相同的動作創建器,並將所有單個待辦事項轉換爲數組:'todos = [todos]'。然後在reducer中你總是可以期待一個數組。 – Mike

+0

謝謝亞倫。是的,首先我想到了一些'initialState',但items/array可能來自'ajax'請求。 –

+0

所以,我會寫一個作文,以防萬一我有一個'Array'我循環在'ADD_TODOS'裏面: –