在React中,是否可以覆盖在构造函数(props)中设置的值?如果没有,如何设置可写默认值?

时间:2018-02-08 00:40:00

标签: javascript reactjs

非常确定我知道答案,因为我的setState({})确实没有做任何事情。

这是我的构造函数:

constructor(props) {
    super(props);
    this.state = {
        percentiles: {
            incN: 'n',
            incP1: 10,
            incP2: 25,
            incP3: 50,
            incMean: 'Mean',
            incP4: 75,
            incP5: 90,
            coN: 'n',
            coP1: 50,
            coMean: 'Mean'
        }
    }
}

后来我正在尝试做类似的事情:

handleClick(e) {
    this.setState({
        incN: e.target.id
    })
}

e.target.id = 5并且它不会从10更改,因此我很确定如果在constructor(props)中分配,则无法覆盖它。

那么我应该在哪里放置默认值可以被覆盖?在render()或许?

1 个答案:

答案 0 :(得分:3)

incN是百分位数的属性,因此您需要这样做:

this.setState({
    percentiles: {
        ...this.state.percentiles,
        incN: e.target.id
    }
});