一、失效原因
因为react的生命周期执行顺序是,componentWillMount , render, componentDidMount
render执行的时候,defaultValue应该已经赋值完毕(这个提前赋值的形式比较多,可以在class以外赋值,可以在state初始化时赋值,也可以在componentWillMount 里赋值,也可以在render头部赋值等等等等),如此才能生效
二、三种情况下设置 默认值/初始值
- defaultValue
- value
- initialValue
defaultValue 和 value
defaultValue只会在render时执行一次,然后再怎么设置都不会变化。所以,当将defaultValue设置为state动态值时,state变化,defaultValue却不会变化,这时需要使用 value 来设置默认值
当我们的业务需要 select 多次刷新数据且需要重置数据时,应该将 defaultValue 替换为 value
render() {
return (
<div >
<Select
value={this.state.value}
onChange={this.onChange}
>
<Option value="jack">Jack</Option>
<Option value="lucy">Lucy</Option>
</Select>
</div>
)
}
由于使用 value 解决了我的问题,关于 initialValue 便没有作进一步探究,详情参考:https://blog.csdn.net/qq_36990322/article/details/90765043