2016-11-27 27 views
0

在ReactJS中将可变键名称传递给setState的正确方法是什么?我发现自己不得不扮演临时地图的游戏,一拉以编程方式生成的反应状态键名称

removeLookup(idx) { 
    let lookupPrefix = this.composeKeys(Editor.fooDefinition, "lookups"); 
    let arraySizeKey = this.composeKeys(lookupPrefix, Editor.arrayLengthKey); 
    let lookupCount = this.state[arraySizeKey]; 

    let newState = new Map(); 
    newState[arraySizeKey] = lookupCount - 1; 
    newState[this.composeKeys(lookupPrefix, Editor.isDeletedKey)] = true; 

    this.setState(newState); 
} 

它的工作原理,但我宁愿只需要调用setState每个修改,而不是建立在地图的前期,尤其是在情况下,我只有一个这样的修改。

回答

0
You don't have to use map you acn use just an obj. 

var _state = {}; 
_state[arraySizeKey] = lookupCount - 1; 
_state[this.composeKeys(lookupPrefix, Editor.isDeletedKey)] = true; 
this.setState(_state); 

但我认为下面是你需要,你可以在写变量名是什么[...]

this.setState({ 
    [arraySizeKey]: lookupCount - 1, 
    [this.composeKeys(lookupPrefix, Editor.isDeletedKey)]:true 
    }); 
+0

,使密钥字符串数组,而不是字符串。注意到:地图。 – kolosy