开发中,很多场景需要给下拉款、时间、输入框这些组件给定默认值。antd也很贴心的提供了defaultValue和value这两个api
defaultValue: 初始值 value: 当前值 – – 所以我们会选中defaultValue这个api
场景一:给列表中的input设置默认值
很显然是有效果的。
八特,当我们修改input值之后,再点搜索(未执行保存操作),input的值并没有回到初始值 – – 我的理解是defaultValue是组件实例化之后只会执行一次的属性
所以很明显react并没有重新渲染该组件。
解决办法:给组件加个key
场景二:给下拉框设置默认值
框起来的部分需要设置服务点集合中的第一个,很自然的想到在callback中,设置该select的默认值
咔咔加上defaultValue之后,发现并没有成功,随后想着是不是要重新render组件才行,所以使用了useState,从接口接收到数据之后重新render组件,保存–编译。。。。。。还是不行
解决办法:还是给组件加个defaultValue 同样值的 key。
其实思路并没有错,是需要重新render组件,才能实现局部更新,但是useState并没能重新render组件,而加上key就可以,这是为什么呢?
React key值的作用
react中的key属性,它是一个特殊的属性,它的出现不是给开发者用的,例如你为一个组件设置key之后,也仍无法获取这个组件的key值,而是给react自己用的,简单来说,react利用key来识别组件,它是一种身份标识,就像我们的身份证用来辨识一个人一样,每个key对应一个组件,相同的key react认为是同一个组件,这样后续相同的key对应组件都不会被创建。
其实,vue中在使用v-for指令时,vue也希望我们给组件加上key。用来优化性能,提升diff对比效率。vue只会重新渲染改变了地方。