问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

React hook ---如何使useEffect 在渲染时不执行,只在数据变更时执行

发布网友 发布时间:2023-04-13 06:02

我来回答

1个回答

热心网友 时间:2023-10-09 02:20

在看这个之前,可以先去了解useEffect的原理和执行机制 https://zh-hans.reactjs.org/docs/hooks-effect.html

需求是:用户点击搜索按钮查询后,这个表格显示出来,表格的页数大小或者当前页发生改变时重新去请求数据,
但是这个不是mounted事件,而且触发事件,用户不点击不执行,所以使用useEffect时,要禁止在页面初次渲染时去执行

有试过把执行方法放到return中去执行,想利用useEffect的清除机制去执行获取函数方法

失败
原因是useEffect在每次执行的时候都会生成形成一个快照并保留下来(相当于Render),因此当状态变更而 Rerender 时,就形成了 N 个 Render 状态,而每个 Render 状态都拥有自己固定不变的 Props 与 State。
用清除机制去执行的话,总会去执行上一个快照保存的值(用户翻页到了第三页,但是获取的数据相当于用户翻页到了第二页的数据)

附上useEffect的清除机制,看注释就好,详情点击→( https://zh-hans.reactjs.org/docs/hooks-effect.html#explanation-why-effects-run-on-each-update )

由于没有找到好的方法,只能做个*

设置初始值isInit为true,当页面初次渲染时,isInit赋值为false,之后每次判断isInit的值就可以了

目前为止还算体面的解决方案吧,如果有更好的解决方法,告我一声,感激不尽

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人教版小学英语课本哪里能下载到MP3 小学英语同步听力音频去哪里找 去陆丰旅行,要提前做好什么准备? 请教高手:苹果6s能不能安装两个微信?谢谢指点! 对于一个在女性内衣店工作的男性,你们怎么看待 ...湖是世界最深和蓄水量最大的咸水湖 B.死海是世界最低点 C.马来群 ... ...世界最大的湖泊___世界上人口最多的国家___世界上面积最大... 世界最深和蓄水量最大的湖是什么?世界最低点是哪?世界面积最大的高原... 尚赫净水器滤芯 如何清洗尚赫 reactuseeffect中判断元素是否有效 7岁男孩误食毒蘑菇住进ICU,这些土方法别再信了 哪里有收藏50年代的缝纫机 荔枝菌和什么毒蘑菇很相似 哪里回收老式旧缝纫机(老式缝纫机哪里有卖) 肾穿对身体有影响吗 肾穿刺有后遗症吗? 哪里有收老式缝纫机的 双生子的意思双生子的意思是什么 首都师范大学教育学考研:考研初试和复试该如何准备? 我的专业是初等教育(小学英语)有哪位好心人可以告诉我,我可以报考哪些院校的研究生?不胜感激!!! 水资源保护的公益广告语是什么? 大小七孔门票在哪里预约 罗布林卡门票怎么预约 2020湖北A级景区对全国游客免门票预约入口 设置的怎么删除 登陆过的怎么删除? 职业年金退休如何计算 高中休学需要什么条件 为什么现在红米1s手机都放到老人手机店那里卖了? 函数组件详解 女人月经期间会怀孕吗 海康威视门铃门禁安装说明 春节的节日风俗有哪些作文 梦见宴请很多陌生人吃饭 秘有多少个音并组词 嵩山十志十首。枕烟庭译文 | 注释 | 赏析 踊跂的解释 踊_的引证解释踊_的引证解释是什么 摅发的引证解释摅发的引证解释是什么 百牢关的解释 三峡的词语三峡的词语是什么 荣耀x40i的钢化膜和哪个通用? 钢化玻璃贴膜真的对华为荣耀手机有保护作用吗 七月初七可以剪头发吗 重温旧业的解释 重操旧业什么意思?有什么典故?英文翻译是什么? 命格解析:虎年出生在子时的女孩命运 温柔敏感善于社交? 扒扣刀原理 图中LW6是延时(松刀到位延时)。 谁能看懂的帮忙解释一下整个图具体是什么意思。 L3.1 扣刀 L2.6 松刀