2015-12-27 7 views
5

実際には、私はjsonオブジェクト(Reactとlodash)でmysiteフロントエンドを完全に処理する必要があります。lodashでjsonを更新する

私たちは言うAJAX呼び出し、

starred[] //returns empty array from server 

経由で初期データを取得していますし、ユーザーがスターブトンでそれをクリックしたときに、ユーザーが再びクリックすると、

starred.push({'id':10,'starred':1}); 

を新しいJSONを追加してい0

current_star=_findWhere(starred,{'id':10}); 
_.set(curren_star,'starred',0); 

でなければなりませんが、主演にconsole.log

を行う場合
console.log(starred); //returns 
[object{'id':10,'starred':0}] 

が、それが繰り返されると、実際にグローバルJSONは更新されていない、いくつかの他の操作を行っておりますしながら、JSONのようなある、

console.log(starred); //returns 
[object{'id':10,'starred':1}] 

グローバルを更新する方法を私はJSONを変更したら、私はしたいですjsonをもっと簡単に処理するためのより良いフレームワークを提案することを考えてみてください。

ありがとうございました!

+0

あなたはunderscore.jsライブラリを使用していますか? –

+0

いいえ...そのlodash.js –

+0

いくつかのコードを追加できますか? – Kiril

答えて

0

私は問題が元の状態に変化していると思います。代わりにプッシュを作る は、次のFEを実行する必要があります。

var state = { 
    starred: [] 
}; 

//perform push 
var newItem = {id:10, starred:1}; 
state.starred = state.starred.concat(newItem); 

console.log(state.starred); 
//{ id: 10, starred: 1 }] 

var newStarred = _.extend({}, state.starred); 
var curr = _.findWhere(newStarred, {id: 10}); 

curr.starred = 0; 

state = _.extend({}, state, {starred: newStarred}); 

console.log(state.starred) 
//{ id: 10, starred: 0 }] 

は、より見栄えの良いやり方でこれを解決するには、使用のいずれかのような不変性ヘルパー、またはES6のものを、反応させるために必要があります:{...新しいオブジェクトを毎回拡張するのではなく、{state:{starred:[}}}または単にreact-redux =を使用してください)

関連する問題