发起比方说,一些微妙的原因,我有以下反应过来状态:变异字符串从阵营状态
{ superGreeting: 'Hello!!!' }
现在,假设我有这样复杂的操作,基本上采取superGreeting串并工作就可以了,在结束替换特定位置上的字符。那么新的状态应该是:
{ superGreeting: 'Hullo!!!' }
那么,就不会有我的行动:
action = (index) => {
var { superGreeting: newGreeting } = this.state;
newGreeting[index] = 'u';
this.setState({superGreeting: newGreeting});
}
可惜的是,这种方法是行不通的,结尾是: TypeError: Cannot assign to read only property '1' of string 'Hello!!!'
,表示该行违规之一: newGreeting[index] = 'u'
我使用react.js,ES6,没有redux,没有mobx,没有immutable.js。认为这个问题是由于字符串仍然被相关/由即将到来的状态使用,所以我认为创建一个副本将工作(我试过newGreeting = newGreeting.toString()
,'' + newGreeting
,`$ {newGreeting}`,''.concat(newGreeting)
,没有任何成功)。有任何想法吗?
谢谢!我已经修正了这个例子。 – Eoin
完美,谢谢! – loganfsmyth