React编程中需要注意的两个错误
网络编程 2021-07-04 14:07www.168986.cn编程入门
React可以说是前端的先驱者,它总是会引领整个前端的潮流。 但我们在使用也经常会遇到错误,狼蚁网站SEO优化这篇文章主要给大家介绍了关于React编程中需要注意的两个错误,需要的朋友可以参考下
前言
在React编程中, 我们习惯用useEffect、useState等Hook去进行开发,在开发过程中难免会遇到许多问题,前阵子,我在写代码的时候,踩过不少坑,这里先列举两个较为常见的,也希望读者们看完这篇文章能够避免踩坑!
一. useEffect无限渲染
背景
- 页面初始化的时候,我们需要通过useEffect()来进行一些初始化工作。
- 在useEffect()方法中,调用了代码getData()去后台调取数据。
- 比如页面所需的userName字段,我们在获取数据后,调用setUserName(userName)来进行赋值。
伪代码如下
import React, { useState, useEffect } from 'react'; const App = () => { const [userName, setUserName] = useState<string>('') useEffect(() => { // 调取后台接口 const data = getData() // 赋值给对应的State setUserName(data.userName) }) return ( <div> <span>用户名{userName}</span> </div> ) } export default App;
这样的代码看似没什么问题,逻辑也很正确,实际效果会发生什么呢?来看下狼蚁网站SEO优化的例子
import React, { useState, useEffect } from 'react'; const App = () => { const [count, setCount] = useState(0) useEffect(() => { setCount(count+1) }) return ( <div> <span>{count}</span> </div> ) } export default App;
页面效果如下
大家测试一下就会发现,页面上的数字是会无限增长的,而且你的电脑内存一下子Up起来(可以听听你的电脑风扇是不是吹得更猛了~)。
这个结果说明了什么?说明了useEffect()
在无限的调用中。
原因分析如下
- useEffect()可以理解为初始化,那么初始化中对 有状态的变量 进行了值的更新。
- 而通过useState()创建出来的 有状态的变量 ,其值一旦发生改变,又会重新渲染页面,那么又会重新调用useEffect()方法。
- 就成了一个无限循环。最终造成上述图片所展示的效果。
解决方案如下useEffect()
的第二个参数加一个空数组即可。
import React, { useState, useEffect } from 'react'; const App = () => { const [count, setCount] = useState(0) useEffect(() => { setCount(count+1) },[]) return ( <div> <span>{count}</span> </div> ) } export default App;
那么useEffect()
就只会执行一次
二. 带状态的变量赋给Input框作为默认值,页面无法修改内容
废话不说,直接上案例
import React, { useState, useEffect } from 'react'; const App = () => { const [count, setCount] = useState('初始内容') return ( <div> <input type="text" value={count} /> </div> ) } export default App;
那么页面的效果是这样的
可以发现我明明尝试输入字段,Input
的内容依旧无法改变。原因如下
- 我们用带状态的变量作为默认值赋给Input后,页面会显示其初始内容。
- Input框的value值代表其内容值,那么竟然和这个带状态的变量进行了绑定,那么要想Input框的内容发生改变,带状态的变量也必须改变,这样才能触发渲染。
- 我们在Input中输入一些信息,而这个带状态的变量并没有感知到这个变量的值发生了改变,所以页面上的内容也不会发生改变。
解决方案给这个Input
框增加一个onChange
事件,让其监听到内容的改变,并实时的调用setXXX
方法。
代码如下
import React, { useState, useEffect } from 'react'; const App = () => { const [count, setCount] = useState('初始内容') return ( <div> <input type="text" value={count} onChange={(event)=>setCount(event.target.value)}/> </div> ) } export default App;
页面效果如下
到此这篇关于React编程中需要注意的两个错误的文章就介绍到这了,更多相关React编程错误内容请搜索狼蚁SEO以前的文章或继续浏览狼蚁网站SEO优化的相关文章希望大家以后多多支持狼蚁SEO!
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程