2016-04-24 19 views
0

私のアプリケーションのストアにはstore.authStateというサブツリーがあります。このサブツリーには、authTokenisFetchingブール値、そして最も重要なのはfieldsという3つのオブジェクトがあります。私のフォームには、usernamepasswordという2つのフィールドがあります。React + Reduxでフォームフィールド値を動的に設定

私はSET_FORM_FIELD_VALUEというアクションを作成しました。このアクションは、ユーザーが変更したときに各フィールドの状態を生成して更新する必要があります。

私はSET_FORM_FIELD_VALUEfieldsオブジェクトを更新したいと思います。ユーザーが通常の両方usernamepasswordフィールドに入力した場合、私のstore.authStateは次のようになります。

{ 
    authToken: undefined, 
    isFetching: false, 
    fields: { 
     username: "Brachamul", 
     password: "azerty123" 
    } 
} 

しかし、私の現在のコードは、実際にはすべてのものを上書きするようだと、私はで終わる:

{ 
    field: { 
     username: "Brachamul" 
    } 
} 

フィールドのデータは、最後に編集したフィールドに基づいて変更されます。ユーザー名かパスワードのどちらかです。ここで

は私のコードです:

switch (action.type) { 
    case 'SET_FORM_FIELD_VALUE': 
     let field = {} // create a "field" object that will represent the current field 
     field[action.fieldName] = action.fieldValue // give it the name and value of the current field 
     return { ...state.fields, field } 

は、どのように私は私の問題を解決するために、それを変更できますか?

答えて

2

あなたのリターンは間違っている、それはこの

switch (action.type) { 
    case 'SET_FORM_FIELD_VALUE': 
      return { 
        ...state, 
        fields: { 
         ...state.fields, 
         [action.fieldName] : action.fieldValue 
        } 
      } 
} 

のようなものである必要があり、それがお役に立てば幸いです。

関連する問題