2016-06-27 9 views
1

から設定された状態の私の減速JSONを返す再来&Immutable.js - JSON

var initialState = Map({ 
status: true 
}); 
function user(state = initialState, action) { 
switch (action.type) { 
    case GET_PROFILE: 
    return state.set(fromJS(action.response)) 
    } 
    }) 

API - >action.response

{ 

    "id": 11, 
    "profileImage": "http://www.surfertoday.com/images/stories/addictivesurfing.jpg" 

} 

問題:新しいMapオブジェクトを設定しfromJS、代わりに既存のMapにデータを追加する。私は return state.set(Array(fromJS(action.response)))のような何かをしようとしましたが動作しません。


どうすればこの問題を解決できますか?これに対してImmutable.jsを使用しないでください。

+0

使用' merge'を取得します – user6227254

答えて

1

従来のオブジェクトを変更するのではなく、新しい状態オブジェクトを変更して返すように、技術的には新しいマップを返すようにします。

あなたがしたいことが本当にわからないので、これがなぜあなたにとってうまくいかないのかと言うのは難しいです。私は、 "GET_PROFILE"というケースをおそらくより具体的なものに改名できると思いますか?

この例は完璧ではないですが、あなたにいくつかの洞察力を与えることがあります。https://github.com/rogic89/ToDo-react-redux-immutable/blob/master/src/reducers/todos.js

あなたはより多くの情報を投稿したり、より多くのコードを追加した場合、私はより多くの洞察を提供することができるかもしれします。

0

おそらく、何らかの種類の要求から取得した新しい値で状態を更新しようとしています。

あなたは、新しい値で店舗を更新していないレデューサーでアクションを書いています。

Immutable.js Map/set関数は、2つのパラメータのキーと、キーのみを提供する値を想定しています。

Immutable.js Map/merge代わりにmergeを使用して、ストアの状態とレスポンスのデータを結合します。

var initialState = Map({ 
    status: true 
}); 

function user(state = initialState, action) { 
    switch (action.type) { 
    case GET_PROFILE: 
    return state.merge(fromJS(action.response)) 
    } 
}) 

あなたは代わりに `set`の

{ 
    status: true, 
    id: 11, 
    profileImage: "http://www.surfertoday.com/images/stories/addictivesurfing.jpg" 
} 
関連する問題