iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >React组件中的state和setState()你知道多少
  • 470
分享到

React组件中的state和setState()你知道多少

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

目录state的基本使用setState()修改状态解决方法:总结state的基本使用 状态(state)即数据,是组件内部的私有数据,只能在组件内部使用 state的值是对象,可以

state的基本使用

状态(state)即数据,是组件内部的私有数据,只能在组件内部使用

state的值是对象,可以通过this.state来获取状态。

setState()修改状态

状态是可变的,可以通过this.setState({要修改的数据})来改变状态

注意:跟Vue语法不同,不要直接修改state中的值,这时错误的!

//正确
 this.setState({
     count:this.state.count+1
 })
//错误
this.state.count+=1

最后结合以上内容,写了一个简单的累加器,但是在此之前,我们需要解决this在自定义的方法中的指向问题,否则this指向会为undefined,我们一般希望this指向组件实例。

解决方法:

1.箭头函数

 利用箭头函数自身不绑定this的特点

class App extends React.Component{
    state={
       count:0, 
    }
    render(){
        // 箭头函数中的this指向外部韩静,此处指向render()方法
        return (
            <div>
                <span>总数:{this.state.count}</span>
                <button onClick={()=>{
                    this.setState({
                        count:this.state.count+1
                    })
                }}>点击+1</button>
            </div>
        )
    }
}
ReactDOM.render(<App/>,document.getElementById('root'));

但是这种方法会导致jsX语法中代码过于繁杂,不利于表明项目结构,一般不推荐使用。

2.Function.prototype.bind()

利用ES5中的bind方法,将事件处理程序中的this与组件示例绑定到一起

class App extends React.Component{
    constructor(){
        super()//super()必须写,这时es6语法中class的一个要求
        //此时可将state放到constructor()中
        this.state={
            count:0, 
         }
        this.add=this.add.bind(this)//将this指向绑定到实例
    }
    //事件处理程序
    add(){
        this.setState({
            count:this.state.count+1
        })
    }
    render(){
        // 箭头函数中的this指向外部韩静,此处指向render()方法
        return (
            <div>
                <span>总数:{this.state.count}</span>
                <button onClick={this.add}>点击+1</button>
            </div>
        )
    }
}
ReactDOM.render(<App/>,document.getElementById('root'));

3.class的示例方法

利用箭头函数形式的class实例方法,此方法比较简洁,强烈推荐

注意:该语法是实验性语法,但是由于脚手架中babel的存在,可以直接使用

class App extends React.Component{
    state={
        count:0, 
    }
    add=()=>{
        this.setState({
            count:this.state.count+1
        })
    }
    render(){
        // 箭头函数中的this指向外部韩静,此处指向render()方法
        return (
            <div>
                <span>总数:{this.state.count}</span>
                <button onClick={this.add}>点击+1</button>
            </div>
        )
    }
}
ReactDOM.render(<App/>,document.getElementById('root'));

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!   

--结束END--

本文标题: React组件中的state和setState()你知道多少

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

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

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

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

下载Word文档
猜你喜欢
  • React组件中的state和setState()你知道多少
    目录state的基本使用setState()修改状态解决方法:总结state的基本使用 状态(state)即数据,是组件内部的私有数据,只能在组件内部使用 state的值是对象,可以...
    99+
    2022-11-13
  • React组件中的state和setState如何使用
    本篇内容主要讲解“React组件中的state和setState如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“React组件中的state和setState如何使用”吧!state的基本...
    99+
    2023-06-29
  • vue 的全选组件封装你知道多少
    效果  封装的组件 <template> <el-form-item :label="label"> <el-checkbox ...
    99+
    2022-11-13
  • Vue组件之间的通信你知道多少
    目录Vue组件间通信1.父向子传递数据1.props的大小写2.props的两种写法3.传递动态props2.子向父传递数据3.兄弟(任意)组件间的传值3.1全局事件总线3.2消息订...
    99+
    2022-11-13
  • jQuery的事件处理你知道多少
    目录一、jQuery的事件处理1、页面载入事件2、事件绑定(bind)3、反绑定事件(unbind)4、一次性事件绑定(one)5、模拟鼠标悬停(hover)总结一、jQuery的事...
    99+
    2022-11-13
  • 你应该知道的 10 个 React Native 组件库
    编者注:本文最后更新于 2022 年 12 月 15 日,以包含更新、更受欢迎的库。 在构建 React Native 应用程序时,最佳实践涉及利用独立的 UI 组件来加快开发时间。这个想法并不是 React Nat...
    99+
    2023-09-15
    react native javascript react.js Powered by 金山文档
  • Java中的运算符你知道多少
    目录1.算术运算符1.基本的算数运算符:+ - * / %2.增量运算符**+= -= /= = %=*3.自增自减运算符 ++ – --2.关系运算符3.逻辑...
    99+
    2022-11-13
  • React函数式组件与类组件的不同你知道吗
    目录区别其他区别总结区别 区别函数组件类组件生命周期无有this无有state无有改变stateReact Hooks:useStatethis.setState()性能高(不用实例...
    99+
    2022-11-13
  • 使用react在修改state中的数组和对象数据的时候(setState)
    目录react修改state的数组和对象数据的时候(setState)需要注意react修改数组对象的注意事项删除数组中的指定元素合并两个对象修改多层级对象的值react修改stat...
    99+
    2022-11-13
  • python的变量和运算符你都知道多少
    目录python变量1. 定义变量 (创建变量)2.使用变量3.重新给变量赋值4. 同时定义多个变量5.定义变量和重新赋值变量的原理运算符1. 数学运算符2. 比较运算符:3. 逻辑...
    99+
    2022-11-13
  • 二维码在Python中的应用,你知道多少?
    二维码是近年来越来越流行的一种二维条码,它可以存储大量的信息,而且使用方便,只需要一部智能手机就可以扫描二维码获取信息。在Python中,我们也可以使用各种库来生成和解析二维码,下面就让我们来了解一下。 生成二维码 Python中最常...
    99+
    2023-08-29
    path 二维码 学习笔记
  • C和C++的函数调用约定你知道多少
    目录调用方式1. __cdecl2. __stdcall3. __fastcall4. naked5. __pascal6. __thiscall名字修饰约定1.C编译时函数名修饰约...
    99+
    2022-11-13
  • ASP编程中的实时JavaScript算法,你知道多少?
    ASP编程是一种常见的Web应用程序开发技术,它使用了各种编程语言来构建动态网站和Web应用程序。其中,JavaScript是一种非常重要的脚本语言,用于与用户交互,实现各种动态效果和功能。在ASP编程中,实时JavaScript算法是一...
    99+
    2023-08-15
    编程算法 实时 javascript
  • Vue生命周期中的组件化你知道吗
    目录引出生命周期销毁流程生命周期生命周期总结组件化 template: 非单文件组件 组件的几个注意点  组件的嵌套 &n...
    99+
    2022-11-13
  • PHP 打包技术在 UNIX 开发中的优势,你知道多少?
    PHP是一种流行的服务器端脚本语言,它被广泛应用于Web开发中。在UNIX系统中,PHP打包技术是一种非常重要的技术,它可以帮助开发者更加高效地开发和维护代码。本文将探讨PHP打包技术在UNIX开发中的优势,以及如何使用这种技术。 一、什么...
    99+
    2023-06-28
    打包 开发技术 unix
  • ASP 存储 load path 的使用方法和注意事项,你知道多少?
    ASP 存储 load path 的使用方法和注意事项,你知道多少? ASP 是一种基于服务器端的脚本语言,广泛应用于网站开发中。在 ASP 中,load path 是指用于存储加载文件路径的变量。在本文中,我们将介绍如何使用 ASP 存储...
    99+
    2023-09-05
    存储 load path
  • Numpy中的多维数组索引,你知道如何使用吗?
    Numpy是Python中用于科学计算的重要库,它提供了许多强大的工具来处理多维数组,这些数组是科学计算中最常用的数据结构之一。在本文中,我们将介绍Numpy中的多维数组索引,以及如何使用它们来访问和操作数组中的数据。 一维数组索引 让我们...
    99+
    2023-06-14
    http numpy 索引
  • Vue组件中的自定义事件你了解多少
    主要介绍组件的自定义事件的概念,使用等。 何为组件自定义事件: 组件自定义事件是一种组件间的通信方式,方向是 子组件====>父组件。使用场景:A是子组件,B是父组件,如果要把...
    99+
    2022-11-13
  • react组件中的constructor和super知识点整理
    1、react中用class申明的类一些小知识 如上图:类Child是通过class关键字申明,并且继承于类React。 A、Child的类型是? typeofChild === ...
    99+
    2022-11-12
  • PHP中的数组和对象:你真的知道它们吗?
    在PHP中,数组和对象是两个非常重要的数据结构。虽然在实际编程中常常会用到它们,但是很多程序员对数组和对象的底层实现和使用方式并不是很清楚。本文将深入探讨PHP中的数组和对象,帮助你更好地理解它们的内部原理和使用方法。 一、PHP中的数组...
    99+
    2023-08-24
    linux 数组 对象
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作