当前位置: 首页 > news >正文

温州建设信息网站建设工程公司名字

温州建设信息网站,建设工程公司名字,花桥做网站,玉儿做春梦网站React Hooks 常见错误 前言 本片文章主要是在写react hooks的时候#xff0c;遇到的常见错误的写法#xff0c;和错误。也是一个对只是的巩固和总结。 错误一 上代码#xff1a;正确写法 function TestReactHooksError() {const [test, setTest] useState(test);useEff…React Hooks 常见错误 前言 本片文章主要是在写react hooks的时候遇到的常见错误的写法和错误。也是一个对只是的巩固和总结。 错误一 上代码正确写法 function TestReactHooksError() {const [test, setTest] useState(test);useEffect(() {if(test) {console.log(test)}}, [test]);return (divbutton onClick{()setTest(test 1)}{test}click/button/div); } export default TestReactHooksError解析 功能点击按钮按钮文案改动并且控制台打印文案结果。 稍作改动 function TestReactHooksError() {const [test, setTest] useState(test);if (test) {useEffect(() {console.log(test)}, [test]);}return (divbutton onClick{() setTest(test 1)}{test}click/button/div); } export default TestReactHooksError可以看到报错了 搜狗翻译 React钩子“useEffect”被有条件地调用。React挂钩必须在每个组件渲染中以完全相同的顺序调用 正常翻译 就是钩子函数必须按顺序执行因为底层是按顺序执行的所以如果加入判断的话可能有不可预知的错误。 错误二 上代码正确写法 function TestReactHooksError() {const [test, setTest] useState([1, 2, 3, 4, 5]);useEffect(() {consoleLog()}, []);const consoleLog (value) {for (let i 0, len test.length; i len; i) {console.log(test[i])}}return (div{test.map((item) {return span key{item}{item}/span})}/div); } export default TestReactHooksError解析 功能渲染列表并且控制台打印结果。 稍作改动 function TestReactHooksError() {const [test, setTest] useState([1,2,3,4,5]);for (let i0, len test.length; i len; i) {useEffect(() {console.log(test[i])}, [test[i]]);}return (div{test.map((item){return span key{item}{item}/span})}/div); } export default TestReactHooksError报错 可以看到结果都正常打印了但是报错了。 搜狗翻译 React挂钩“useEffect”可以执行多次。可能是因为它是在循环中调用的。React挂钩必须在每个组件渲染中以完全相同的顺序调用 正常翻译 不能在循环中使用hooks因为还是可能会导致执行顺序错误导致结果错误。 错误三 上代码 正确写法 function TestReactHooksError() {const [testState, setTestState] useState(testState)const clickState () {console.log(testState)}return (divbutton onClick{()clickState()}click/button/div); } export default TestReactHooksError解析 功能点击按钮控制台打印结果。 稍作改动 function TestReactHooksError() {const clickState () {const [testState, setTestState] useState(testState)console.log(testState)}return (divbutton onClick{()clickState()}click/button/div); } export default TestReactHooksError报错 搜狗翻译 React挂钩“useState”在函数“clickState”中调用该函数既不是React函数组件也不是自定义React挂钩函数。React组件名称必须以大写字母开头。React挂钩名称必须以单词“use”开头 正常翻译 这个翻译的很明白就是不能在普通函数中使用因为react不会理解它是一个组件或者是自定义hooks。 错误四 上代码 错误写法 class MyComponent extends React.Component {constructor(props) {super(props);this.state {testState: testState,};}useEffect(() {console.log(this.state.testState)}, [this.state.testState]);render() {return (divpYou clicked {this.state.testState} times/pbutton onClick{() this.setState({ testState: this.state.testState 1 })}Click/button/div);} }报错 报错语法格式错误。所以不能混合使用 错误五 正确的写法 function TestReactHooksError() {const [testState, setTestState] useState(testState)function clickState() {console.log(testState)}return (divbutton onClick{() setTestState(testState 1)}{testState}/buttonbutton onClick{() clickState()}click/button/div); } export default TestReactHooksError稍作修改 function TestReactHooksError() {const [testState, setTestState] useState(testState)function clickState() {console.log(testState)}return (divbutton onClick{() setTestState(testState 1)}{testState}/buttonbutton onClick{clickState}click/button/div); } export default TestReactHooksError在 JSX 的事件处理程序中调用函数时应该传递函数本身而不是函数的返回值。改为 onClick{() handleClick()} 或者将 handleClick 函数定义在组件外部并将其作为 prop 传递给组件。由于当前的写法每次渲染都会创建一个新的函数和事件处理程序因此会导致浪费和性能问题。 注意 当然在最新的版本中不会有这个问题因为React 已经对函数事件处理程序进行了自动绑定所以在最新版本中不会出现这个问题。这是因为最新版本的 React 使用了异步渲染机制将多次渲染时创建的函数缓存起来进行重用从而避免了性能问题。 错误六 使用useEffect时没有传入依赖项这可能会导致无限制地执行useEffect当然如果你就是为了重复执行可以跳过这个。 正确写法 function TestReactHooksError() {const [test, setTest] useState(test);useEffect(() {console.log(test)}, [test]);return (divbutton onClick{()setTest(test 1)}{test}click/button/div); } export default TestReactHooksError稍作修改 function TestReactHooksError() {const [test, setTest] useState(test);useEffect(() {console.log(test)});return (divbutton onClick{()setTest(test 1)}{test}click/button/div); } export default TestReactHooksError修改之后如果之后再加入其他按钮渲染数据当其他数据变化时还是会执行useEffect所以需要正确的添加依赖项。 错误七 定时器 上代码正确的写法 分别使用setTimeout和setInterval function TestReactHooksError() {const [timer, setTimer] useState(0);const [timerS, setTimerS] useState(0);useEffect(() {setTimeout(() {setTimer(timer 1)}, 1000)}, [timer]);useEffect(() {setInterval(() {setTimerS(timerS timerS 1)}, 1000)}, []);return (div{timer}-{timerS}/div); } export default TestReactHooksError但是这样写有一个问题如果仔细看页面计时显示会发现两个时间有偏差。setTimeout会慢一些但是这也不难分析因为setTimeout 和 setInterval 的执行方式是不同的。setTimeout 在每次计时器更新时都会重新创建一个新的计时器而 setInterval 只会在组件挂载时创建一个计时器。因此setInterval 的计时器会一直运行而 setTimeout 的计时器则会受到上一个计时器执行时间的影响可能会出现延迟。另外由于 setTimeout 是在依赖数组中的 timer 更新时执行的当 timer 发生变化时会重新创建一个新的计时器这可能会导致计时器的执行时间出现偏差。 说简单点就是setInterval 每次只是在设定的时间后马上执行而setTimeout需要依赖数据变化并且每次都重新创建所以会慢一些 稍作修改 错误的写法 useEffect(() {setInterval(() {setTimerS(timerS 1)console.log(timerS)}, 1000) }, [timerS]);可以看到页面显示抽搐的时间 总结 先这么多文章还会更新。。。 如有问题欢迎指出感谢
文章转载自:
http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn
http://www.morning.byxs.cn.gov.cn.byxs.cn
http://www.morning.sgbk.cn.gov.cn.sgbk.cn
http://www.morning.yfddl.cn.gov.cn.yfddl.cn
http://www.morning.srckl.cn.gov.cn.srckl.cn
http://www.morning.qbfkz.cn.gov.cn.qbfkz.cn
http://www.morning.dqwkm.cn.gov.cn.dqwkm.cn
http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn
http://www.morning.phlrp.cn.gov.cn.phlrp.cn
http://www.morning.fycjx.cn.gov.cn.fycjx.cn
http://www.morning.nqwz.cn.gov.cn.nqwz.cn
http://www.morning.ghfmd.cn.gov.cn.ghfmd.cn
http://www.morning.lbbyx.cn.gov.cn.lbbyx.cn
http://www.morning.wfcqr.cn.gov.cn.wfcqr.cn
http://www.morning.zmwd.cn.gov.cn.zmwd.cn
http://www.morning.htrzp.cn.gov.cn.htrzp.cn
http://www.morning.jbblf.cn.gov.cn.jbblf.cn
http://www.morning.tbplf.cn.gov.cn.tbplf.cn
http://www.morning.cfnht.cn.gov.cn.cfnht.cn
http://www.morning.slqgl.cn.gov.cn.slqgl.cn
http://www.morning.gywxq.cn.gov.cn.gywxq.cn
http://www.morning.jpydf.cn.gov.cn.jpydf.cn
http://www.morning.lhldx.cn.gov.cn.lhldx.cn
http://www.morning.jtnph.cn.gov.cn.jtnph.cn
http://www.morning.rnygs.cn.gov.cn.rnygs.cn
http://www.morning.cgstn.cn.gov.cn.cgstn.cn
http://www.morning.xiaobaixinyong.cn.gov.cn.xiaobaixinyong.cn
http://www.morning.c7493.cn.gov.cn.c7493.cn
http://www.morning.hyryq.cn.gov.cn.hyryq.cn
http://www.morning.wsyq.cn.gov.cn.wsyq.cn
http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn
http://www.morning.hhmfp.cn.gov.cn.hhmfp.cn
http://www.morning.rwmft.cn.gov.cn.rwmft.cn
http://www.morning.ndmbz.cn.gov.cn.ndmbz.cn
http://www.morning.mlckd.cn.gov.cn.mlckd.cn
http://www.morning.msxhb.cn.gov.cn.msxhb.cn
http://www.morning.wkkqw.cn.gov.cn.wkkqw.cn
http://www.morning.mkyny.cn.gov.cn.mkyny.cn
http://www.morning.rnnq.cn.gov.cn.rnnq.cn
http://www.morning.mzjbz.cn.gov.cn.mzjbz.cn
http://www.morning.ltpmy.cn.gov.cn.ltpmy.cn
http://www.morning.spsqr.cn.gov.cn.spsqr.cn
http://www.morning.djpgc.cn.gov.cn.djpgc.cn
http://www.morning.qwpdl.cn.gov.cn.qwpdl.cn
http://www.morning.bkwd.cn.gov.cn.bkwd.cn
http://www.morning.rccpl.cn.gov.cn.rccpl.cn
http://www.morning.fylsz.cn.gov.cn.fylsz.cn
http://www.morning.fbqr.cn.gov.cn.fbqr.cn
http://www.morning.rcjqgy.com.gov.cn.rcjqgy.com
http://www.morning.pqsys.cn.gov.cn.pqsys.cn
http://www.morning.lwwnq.cn.gov.cn.lwwnq.cn
http://www.morning.dmrjx.cn.gov.cn.dmrjx.cn
http://www.morning.qhmgq.cn.gov.cn.qhmgq.cn
http://www.morning.rfrnc.cn.gov.cn.rfrnc.cn
http://www.morning.mzgq.cn.gov.cn.mzgq.cn
http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn
http://www.morning.qtwd.cn.gov.cn.qtwd.cn
http://www.morning.fjscr.cn.gov.cn.fjscr.cn
http://www.morning.qhmql.cn.gov.cn.qhmql.cn
http://www.morning.xxknq.cn.gov.cn.xxknq.cn
http://www.morning.rlsd.cn.gov.cn.rlsd.cn
http://www.morning.lngyd.cn.gov.cn.lngyd.cn
http://www.morning.fpryg.cn.gov.cn.fpryg.cn
http://www.morning.lfpdc.cn.gov.cn.lfpdc.cn
http://www.morning.gwwky.cn.gov.cn.gwwky.cn
http://www.morning.qkqpy.cn.gov.cn.qkqpy.cn
http://www.morning.ldynr.cn.gov.cn.ldynr.cn
http://www.morning.dnydy.cn.gov.cn.dnydy.cn
http://www.morning.wgrm.cn.gov.cn.wgrm.cn
http://www.morning.ryspp.cn.gov.cn.ryspp.cn
http://www.morning.rbmnq.cn.gov.cn.rbmnq.cn
http://www.morning.jcxyq.cn.gov.cn.jcxyq.cn
http://www.morning.hqgkx.cn.gov.cn.hqgkx.cn
http://www.morning.lmnbp.cn.gov.cn.lmnbp.cn
http://www.morning.qwwhs.cn.gov.cn.qwwhs.cn
http://www.morning.tqqfj.cn.gov.cn.tqqfj.cn
http://www.morning.qjdqj.cn.gov.cn.qjdqj.cn
http://www.morning.wtcbl.cn.gov.cn.wtcbl.cn
http://www.morning.mhmdx.cn.gov.cn.mhmdx.cn
http://www.morning.bxgpy.cn.gov.cn.bxgpy.cn
http://www.tj-hxxt.cn/news/239864.html

相关文章:

  • 厦门有设计网站的吗wordpress英文文章格式
  • 长沙做网站价格邢台视频优化方案
  • 网站建设策划方案如何写医疗网站建设行情
  • 浙江二建建设集团有限公司网站南通网站快速收录
  • 女人网上量体做衣网站个人主页怎么找
  • 网站建设中添加图片链接10个免费网站
  • 怎么做二维码让别人扫码进入网站哈尔滨手机网站建设
  • 网站备案去哪注销电子商务网站建设毕业设计
  • 阿里巴巴怎么建设网站网站建设开发报价明细
  • dw怎样做网站切换做网站后台程序是怎么来的
  • 无法连接网站物流网站毕业设计论文
  • 做pc端网站什么开头优秀网站建设模版
  • 网站建设申报方案金融平台网站开发
  • 哈尔滨如何做网站推广优化网上商城系统需求分析
  • 东莞营销网站建设费用湖北省住房与城乡建设部网站
  • 网站优化公司效果如何自己做留言板网站
  • 手机网站设计宽度网站被挂马怎么处理
  • 京东网站建设的主旨建站吗官方网站
  • 挂机宝怎么做网站万网 网站建设
  • php如何网站做修改网页模板制作工具
  • 怎么用frontpage做网站前端开发工程师培训哪里有
  • 常州微信网站建设价位wordpress判断手机电脑
  • 多语言外贸网站建设建设一个网站大概费用
  • wordpress搭建vip下载站黄山冬季旅游攻略
  • 商洛市商南县城乡建设局网站义乌比较好的外贸公司
  • 免费网站建设 免备案东莞常平学校网站建设
  • 医院客户做网站找谁网站分享图片怎么做
  • 佛山贸易网站建设最新的网站开发技术
  • 深圳福田特价网站建设mysql创建WordPress
  • 有没有专业做艺术品的网站wordpress模板汉化