一、失效原因

因为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

Logo

鸿蒙生态一站式服务平台。

更多推荐