2017-12-24 42 views
1

私は認証後に次のようになりますのlocalStorageに保存されたユーザーの状態があります。今、私はまた、サーバーが更新の情報と私の減速のルックスを返された後、ユーザーの状態を更新するためのアクションをトリガーするフォームを持っているオブジェクトを適切に広げた状態で反応還元状態を更新するにはどうすればよいですか?

"user" : { 
    "first_name":"test19", 
    "last_name":"test19", 
    "email":"[email protected]", 
    "token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjcyMCwia" 
    ... 

をこのように:

case userConstants.UPDATE_USER: 
     return { 
     loggedIn: true, 
     ...state, 
     user: action.user 
     }; 

サーバから返されたオブジェクトは、トークン、および減速の結果が含まれていないことを除いて、これまでのところは良い

は、上記の私に必要なトークンのない新しい状態です。

私が間違っていることは何ですか?ありがとう! :)

答えて

2

私があなたの質問を正しく理解していれば、更新後にトークンを失わないようにしたいと思う。このように減速器を更新してください。

case userConstants.UPDATE_USER: 
    return { 
     loggedIn: true, 
     ...state, 
     user: { 
      ...action.user, 
      token: state.user.token 
     } 
    }; 

ここでの考え方は、あなたが新しい状態を返す前に、(変異なし)状態のいずれかでaction.userのトークン属性を上書きする、ということです。

+1

!そしておかげで、これはうまくいった! – drfunkensztajn

0

最初の状態を追加し、それがメインの状態の破壊後にユーザーを上書きし、ユーザーの古いバージョンが含まれます:はい、正しく理解

case userConstants.UPDATE_USER: 
     return { 
     loggedIn: true, 
     ...state, 
     user:{ 
      ...action.user, 
      ...state.user, 
     }, 
     }; 
+0

申し訳ありませんあなたのソリューションは状態をまったく更新していません、それは... state.userが... action.userを上書きするためですか? – drfunkensztajn

関連する問題