react怎么绑定state(react纯函数组件setState更新页面不刷新的解决)
react怎么绑定state
react纯函数组件setState更新页面不刷新的解决目录
- 问题描述:
- 原因分析:
- 解决方案:
- 补:react中,hooks钩子时useState更新不渲染组件的问题
const [textList, setTextList] = useState(原数组); setTextList(新数组);
当修改原数组时,如果原数组是个深层数组(不只一层),使用setTextList修改时,不会触发页面刷新
这个涉及到可变对象he不可变对象的知识,在vue和react中,如果更新可变对象时,可能会引起视图更新,这是因为,vue和react默认都是浅监听,只会监听数据的第一层,内层数据发生改变,并不会监听到。
解决方案:这里我的解决方案是,先将原数组深拷贝,赋值给新数组,再修改新数组,将修改后的新数组传递进去,这样就会引起视图更新。
var lists = textList.concat(); lists.splice(index, 1); setTextList(lists);
当使用react,写如图组件时,发现一个很关键的问题,当选择用class写的时候,很容易通过组件更新渲染。
当我决定用函数式组件hooks来重构我的组件的时候,发现了一个很难搞的问题,当我通过onChange去改变父组件value的时候,value的值改了,竟然没有重新渲染组件????
一脸懵逼的我,于是试图将class组件时先将value设为空再赋值-----失败了
于是试图通过钩子的生命周期看了一遍。。。。------失败了
还是百度吧------发现了同样的问题。。。发现用只要再后面加slice()
于是本着先解决问题的态度,将图中红圈位置改为了onChange(value.slice())
-----于是,解决了这个神奇的问题。
现在问题解决了,回过头来看看到底怎么回事。。。
查看文档发现一句话useState里数据务必为immutable (不可赋值的对象)
也就是ass component的state也提倡使用immutable数据,但不是强制的,因为只要调用了setState就会触发更新。所以再class组件中没有出现这种问题,或者通过改变为空再赋值是可以触发更新的。
但是再使用useState时,如果在更新函数里传入同一个对象时将无法触发更新。
于是解决思路就是通过slice() 返回一个新的对象去赋值是解决问题的关键。。。。
以上就是react纯函数组件setState更新页面不刷新的解决的详细内容,更多关于react useState页面不刷新的资料请关注开心学习网其它相关文章!
- yii2对比springboot(yii2.0框架使用 beforeAction 防非法登陆的方法分析)
- react 分页列表优化(使用react-beautiful-dnd实现列表间拖拽踩坑)
- react常用设计模式(提高React界面性能的十个技巧)
- reactnative ios(详解React Native与IOS端之间的交互)
- react跳转页面并传参数(react 跳转后路由变了页面没刷新的解决方案)
- react性能优化是哪个周期(React 并发功能体验前端的并发模式)
- react组件之间通信(React传递参数的几种方式)
- react加载优化(React星星评分组件的实现)
- react组件参数(浅析React中的受控组件和非受控组件)
- react路由原理解析(React配置子路由的实现)
- reacthooks基础使用(React 小技巧教你如何摆脱hooks依赖烦恼)
- react和antd项目教程(React引入antd-mobile+postcss搭建移动端)
- react usestate实现原理(浅谈react useEffect闭包的坑)
- react高阶组件怎么用(React 高阶组件HOC用法归纳)
- react怎样实现响应式计算属性(深入浅析React中diff算法)
- react的基本知识(React中refs的一些常见用法汇总)
- 鞠婧祎和杨紫两种风格的女生,你心里谁比较美(鞠婧祎和杨紫两种风格的女生)
- 三千年第一美女鞠婧祎出演白素贞pk杨紫,颜值胜赵雅芝王祖贤(三千年第一美女鞠婧祎出演白素贞pk杨紫)
- 成都轨道交通13号线一期工程最新进展(成都轨道交通13号线一期工程最新进展)
- 越南没事(越南没事情做)
- 重庆旅游攻略(重庆旅游3-4天攻略最佳线路)
- 周杰伦演唱会门票(周杰伦演唱会门票多少钱一张2023)
热门推荐
- mysql删除表数据的语句(Mysql实现定时清空一张表的旧数据并保留几条数据推荐)
- python pandas读取数据库表(Python3.5 Pandas模块之DataFrame用法实例分析)
- knn算法详细步骤(Python实现KNNK-近邻算法的示例代码)
- laravel自动分解大任务(Laravel如何实现自动加载类)
- mvc中@helper的用法
- python画折线图(python使用Plotly绘图工具绘制水平条形图)
- docker运行镜像端口(docker镜像访问本地elasticsearch端口操作)
- docker容器管理技巧(Docker容器编排实现过程解析)
- sql多条件查询汇总语句(SQL判断语句用法和多表查询)
- vue项目步骤(Vue项目中常用的实用技巧汇总)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9