1

一般的にネイティブおよびJavascriptプログラミングに反応するのは初めてで、React Nativeとreduxを使用して単純な「To Do」アプリを作成しようとしています。

以下に示すように、レデューサーの配列に「To Do」を追加しようとしています。

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 の結果が表示され ます。'First Thing' と 'Second Thing' が 2 つの追加結果であり、同じ行に連結されていることがわかります。

私の最初の考えは、以下のようにデータを取る私のダムまたはプレゼンテーションの 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
    };
}
4

4 に答える 4

1

配列スプレッド演算子が必要です。つまり、

export default function toDo(state = initialState, action) {
  switch (action.type) {
    case types.ADD:
      return {
        data: [...state.data, action.toDoData]
      }
    default:
      return state;
  }
}
于 2016-12-18T07:35:29.290 に答える
0

どういうわけか、最初のループで、state.data に文字列を追加したと思います...次のようなことを試してください list = state.data.concat(action.toDoData)
:
list = [...state.data, action.toDodata]

于 2016-12-18T11:55:09.497 に答える