【发布时间】:2017-02-14 18:52:34
【问题描述】:
这个问题可能有点偏向“最佳实践”问题,但请多多包涵。
这是我的一部分状态:
this.state = {
typeElements: {
headers: [
{
name: "h1",
size: 70,
lineHeight: 1.25,
kearning: 0,
marginAfter: 0
}, {
name: "h2",
size: 70,
lineHeight: 1.25,
kearning: 0,
marginAfter: 0
}, {
name: "h3",
size: 70,
lineHeight: 1.25,
kearning: 0,
marginAfter: 0
}...
我需要做的是在 headers 数组的给定索引处替换对象。
我不知道如何使用 this.setState(headers[1] = {obj}) 中的 setState 方法来做到这一点——但这显然是无效的。我当前的方法是创建一个新数组并像这样破坏旧数组:
_updateStyle(props) {
let newState = Object.assign({}, this.state)
newState.typeElements.headers[props.index] = props
this.setState(newState)
};
对于我的小型 hacky 项目,我想这还可以,但我觉得这是超级繁重的,并且会很快导致任何规模的性能问题。
【问题讨论】:
标签: javascript arrays reactjs ecmascript-6 immutability