页面初始化,antd组件默认值赋值失败

开发中,很多场景需要给下拉款、时间、输入框这些组件给定默认值。antd也很贴心的提供了defaultValuevalue这两个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只会重新渲染改变了地方。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值