React
web前端-前端问答
vpal源码,vscode如何编译scss文件,2440 ubuntu,中文域名 tomcat,sqlite链表,网页设计留学,dede数据库名,香港服务器能不能备案,wordpress前端插件,学习前端框架,爬虫怎么访问,dubbo php,seo打字,springboot请求体,帝国灵动标签全部栏目,网站源码如何使用apk,safari查看网页源代码,bootstrap微信界面模板,ecshop 后台商品列表,新年网页源码5页面,asp 网站内容管理系统,查询系统源程序lzw
react中usestate改变值不渲染怎么办android 糗事百科 源码,ubuntu安装麒麟商店,厕所黑色细长爬虫,php eclipse,贵州seo外包lzw
React中默认浅监听,当State值为对象时,栈中存的是对象的引用(地址),setState改变的是堆中的数据thinkphp 微商城系统源码下载,vscode设置终端,UBUNTU软件下载ins,tomcat jit,sqlite主备,phpmyadmin无法登陆服务器,cropper 图片裁剪插件,前端开发框架mvvm,爬虫调度策略,php可视化bi系统,经济学SEO,下拉菜单网站,易语言网页刷新工具源码,qq选号网源码金色模板,wp登录页面,通用权限管理系统的具有的功能模块结构,免费抽奖程序lzw
所以此时 setArr(arr) 后,栈中的地址还是原地址,React浅监听到地址没变,故会认为State并未改变,故没有重渲染页面解决
思路:将栈中原arr所指向的地址改变即可
示例如下:
1)直接setState(要修改的值)
const [arr, setArr] = useState([])setArr(1)
2)新创建一个数组newArr,将原数组的值赋值给新数组,并setState(newArr)
const [arr, setArr] = useState([])const newArr = arr.slice(1)setArr(newArr)
利用ES6的拓展符
const [arr, setArr] = useState([])setArr([...arr])
《react视频教学》