iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React编程中需要注意的两个错误
  • 603
分享到

React编程中需要注意的两个错误

2024-04-02 19:04:59 603人浏览 薄情痞子
摘要

前言 在React编程中, 我们习惯用useEffect、useState等Hook去进行开发,但是在开发过程中难免会遇到许多问题,前阵子,我在写代码的时候,踩过不少坑,这里先列举两

前言

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;

这样的代码看似没什么问题,逻辑也很正确,但是实际效果会发生什么呢?来看下下面的例子:


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编程错误内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: React编程中需要注意的两个错误

本文链接: https://www.lsjlt.com/news/125941.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • React编程中需要注意的两个错误
    前言 在React编程中, 我们习惯用useEffect、useState等Hook去进行开发,但是在开发过程中难免会遇到许多问题,前阵子,我在写代码的时候,踩过不少坑,这里先列举两...
    99+
    2024-04-02
  • Java编程中需要注意什么
    本篇内容介绍了“Java编程中需要注意什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 尽量在合适的场合使用单例使用单例可以减轻加载的负担...
    99+
    2023-06-17
  • React中需要注意的事项有哪些
    小编给大家分享一下React中需要注意的事项有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、容器性组件(containe...
    99+
    2024-04-02
  • Java编程中的异步编程,你需要注意的细节!
    随着互联网的迅猛发展,越来越多的业务需要支持高并发和大量的数据处理,因此异步编程成为了现代编程的一个重要技术手段。Java作为一门流行的编程语言,自然也支持异步编程。但是,异步编程并不是一件容易的事情,需要注意很多细节才能写出高质量的异步...
    99+
    2023-08-17
    编程算法 异步编程 http
  • MySQL处理空值时需要注意的两个问题
    本篇内容介绍了“MySQL处理空值时需要注意的两个问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MyS...
    99+
    2024-04-02
  • 使用hooks写React组件需要注意的5个地方
    目录01.不需要render的场景下使用useState 02.使用了router.push而非link 03.通过useEffect来处理actions 04.单一职责组件 05....
    99+
    2024-04-02
  • 并发编程中我们需要注意的问题有哪些
    这篇文章主要介绍“并发编程中我们需要注意的问题有哪些”,在日常操作中,相信很多人在并发编程中我们需要注意的问题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”并发编程中我...
    99+
    2024-04-02
  • Python并发编程中需要注意哪些接口优化?
    Python是一种高级编程语言,具有简单易学、可读性强等特点,因此在并发编程中也得到了广泛的应用。然而,Python的并发编程在性能上常常受到限制,因此需要注意一些接口优化才能发挥出其最大的潜力。在本文中,我们将探讨Python并发编程中需...
    99+
    2023-05-26
  • spring中@value注解需要注意的问题
    首先,@value需要参数,这里参数可以是两种形式:@Value("#{configProperties['t1.msgname']}")或者@Value("${t1.msgname}");其次,下面我们来看看如何使用这两形式,在配置上有什...
    99+
    2023-05-31
    spring 注解 ue
  • Python 中的 Numpy 编程算法重定向需要注意哪些问题?
    Numpy 是 Python 中用于科学计算的一个重要库,它提供了众多的数学函数和数据类型,可以有效地处理大规模数据的计算。在 Numpy 中,算法重定向是一项非常常见的操作,但也是容易出错的。在本文中,我们将探讨一些在 Numpy 中进...
    99+
    2023-10-02
    重定向 numpy 编程算法
  • PHP开发程序需要注意的42个优化准则
    本篇内容主要讲解“PHP开发程序需要注意的42个优化准则”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP开发程序需要注意的42个优化准则”吧!PHP 独特的语法混合了 C、Java、Perl...
    99+
    2023-06-17
  • 小程序直播的过程中需要注意什么
    小编给大家分享一下小程序直播的过程中需要注意什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!我们都知道,小程序直播室需要结合某信的群来做的,并不是只靠这个直播间...
    99+
    2023-06-27
  • 学Python要注意哪些隐秘的错误
    今天就跟大家聊聊有关学Python要注意哪些隐秘的错误,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。对于完全没有编程经验的初学者,在学习python的时候,面对的不仅仅是python...
    99+
    2023-06-17
  • PHP 函数处理数据时,需要注意哪些常见错误?
    处理 php 数据时,常见错误包括:使用 unset() 而不是 empty() 和 isset();混淆 == 和 ===;忘记过滤用户输入和转义输出;错误处理数组。避免这些错误可提升...
    99+
    2024-05-04
    php 数据处理错误 lsp
  • CSS样式编写时需要注意的有哪些
    CSS样式编写时需要注意的有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码如下:[selector]{  &...
    99+
    2024-04-02
  • PHP编程中文件加载算法有哪些需要注意的地方?
    在PHP编程中,文件加载算法是一个非常重要的部分。在加载文件时,我们需要注意一些细节,以确保代码的正确性和性能。在本文中,我们将介绍PHP编程中文件加载算法的一些需要注意的地方。 一、文件的路径 在PHP中,文件路径有两种方式:绝对路径和相...
    99+
    2023-08-07
    编程算法 文件 load
  • 网站建设过程中需要注意什么
    小编给大家分享一下网站建设过程中需要注意什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  在网站建设过程中,其实有很多事情都是需要注意的,稍不留意网站就会遇到...
    99+
    2023-06-10
  • Go API 文件编程算法需要注意哪些细节?
    Go语言是一种非常流行的编程语言,它的简洁性和高效性使得它成为了许多开发者的首选语言。在Go语言中,API文件编程算法是一种非常常见的编程方式,可以帮助开发者轻松地构建高效、可靠的API。然而,在实现API文件编程算法时,需要注意一些细节,...
    99+
    2023-06-24
    api 文件 编程算法
  • 避免灾难:Web.config 转换中需要注意的注意事项
    ...
    99+
    2024-04-02
  • C#异步使用需要注意的几个问题
    目录一、异步模型的基本概述二、C#异步使用需要注意的几个问题三、CancellationToken 结构体1.手动取消2.利用方法取消,抛出异常3. 传参数取消4.手动触发事件取消任...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作