2017-06-14 63 views
1

我是React.js的新手,我正在設計一個小遊戲。可以通過訪問此對象中的其他值來設置對象的值嗎?

當我設置life的值時,我想使用值job,我可以在React.js中執行嗎?

這裏是我的代碼部分:

this.setState({ 
      players:[ 
       { 
        id:uuid.v4(), 
        name: "A", 
        job: "Wizard", 
        life: this.getRandHealth("Wizard") 
       }, { 
        id:uuid.v4(), 
        name: "B", 
        job: "Witch", 
        life: this.getRandHealth("Witch") 
       }]}); 

我想直接訪問job,而不是手動簽署人。我可以做嗎?

+0

什麼時候會調用上面的代碼?如果'this.getRandHealth'也會更新健康狀況,則不必列出其他參數,只是改變生活。 – EatYaFood

回答

0

一種解決方案是確定球員名單沒有life然後用.map()添加它:

var list = [{ 
    id: uuid.v4(), 
    name: "A", 
    job: "Wizard", 
}, { 
    id: uuid.v4(), 
    name: "B", 
    job: "Witch", 
}]; 

this.setState({ 
    players: list.map(function(obj) { 
    return { 
     id: obj.id, 
     name: obj.name, 
     job: obj.job, 
     life: this.getRandHealth(obj.job) 
    }; 
    }, this); 
}); 

如果ID始終uuid.v4(),那麼你可以移動到地圖以及減少重複進一步。

+0

我提交表單後,似乎生成的狀態將會刷新,請問您可以看一下嗎? https://stackoverflow.com/questions/44545184/react-js-initial-state-generated-randomly-how-to-prevent-it-from-regenerate-e –