iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >React的三大属性是什么
  • 639
分享到

React的三大属性是什么

2023-06-29 08:06:18 639人浏览 独家记忆
摘要

这篇文章主要为大家展示了“React的三大属性是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“React的三大属性是什么”这篇文章吧。React三大属性props组件是封闭的,接收外部数据应

这篇文章主要为大家展示了“React的三大属性是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“React的三大属性是什么”这篇文章吧。

React三大属性

props

  • 组件是封闭的,接收外部数据应该通过props来实现

  • 数组件通过参数props来接收数据,props是一个对象; 类组件通过this.props接收数据。

  • 传递数据:在组件标签上添加属性

函数组件
const Hello = (props) => {    console.log(props);    return (        <div>props:{props.name}</div>    )}ReactDOM.render(<Hello name="mimi" />, document.getElementById('root'))
类组件
class App extends React.Component {    render() {        console.log(this.props);        return (            <div>                props: {this.props.name}            </div>        )    }}ReactDOM.render(<App name="mimi" />, document.getElementById('root'))

在继承类的构造函数中必须调用super函数,super代表父类的构造函数。es6 要求,子类的构造函数必须执行一次super函数,否则会报错。但是super函数内的this指向的是当前类的实例。

构造器是否接受 props,是否传递给 super,取决于是否希望在构造器中通过 this访问props。

  • 当构造器中接收了props参数,super没有传递props,此时this.propsundefined,当然可以正常使用props(前边不加this)

  • 当构造器中接收了props参数,super也传递props,可以通过this.props拿到对象。

原因:类组件会继承React.Component,而Component的源码是:

function Component(props, context, updater) {  this.props = props;      //绑定props  this.context = context;  //绑定context  this.refs = emptyObject; //绑定ref  this.updater = updater || ReactNoopUpdateQueue; //上面所属的updater 对象}

当我们在类组件中调用super,实际上是在执行父类的构造函数,如果没有将props传入super函数,那么在子类的构造函数中,this.props是undefined。

为什么仍然可以在 render和其他方法中访问 this.props。因为React 会在构造函数被调用之后,会把 props 赋值给刚刚创建的实例对象。

state

有状态组件和无状态组件
  • 函数组件又叫做无状态组件,函数组件没有自己的状态,只负责数据的静态展示。

  • 类组件又叫做有状态组件,类组件有自己的状态,负责更新UI,让页面动起来。

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

每个组件都有state,它的值是对象类型;组件state属性的初始化放在构造方法中。

class App extends React.Component {    constructor() {        super();        // 初始化state        this.state = {            count: 0        }    }    render() {        return (            <div>计数器:{this.state.count}</div>        )    }}ReactDOM.render(<App2 />, document.getElementById('root'))
  • 状态是可变的:this.setState({要修改的数据})

  • 注意不要直接通过this.state.x = y 修改state中的数据,这是错误的写法.

  • etState的作用:

修改state
2. 更新UI

setState

执行setState()的位置?

  • 在react控制的回调函数中: (异步)

    • 生命周期勾子 ,react事件监听回调(合成事件)

  • 非react控制的异步回调函数中: (同步)      

  • 定时器回调 ,原生事件监听回调 , promise回调

setState是异步还是同步?

setState的“异步”并不是说内部由异步代码实现,其实本身执行的过程和代码都是同步的。只是在 React 的 setState 函数实现中,会根据 isBatchingUpdates(默认是 false) 变量判断是否直接更新 this.state 还是放到队列中稍后更新。然后有一个 batchedUpdate 函数,可以修改 isBatchingUpdates 为 true,当 React 调用事件处理函数之前,或者生命周期函数之前就会调用 batchedUpdate 函数,这样的话,setState 就不会同步更新 this.state,而是放到更新队列里面后续更新。

这样你就可以理解为什么原生事件和 setTimeout/setinterval 里面调用 this.state 会同步更新了,因为通过这些函数调用的 React 没办法去调用 batchedUpdate 函数将 isBatchingUpdates 设置为 true,那么这个时候 setState 的时候默认就是 false,那么就会同步更新。

props和state属性的区别

props 是组件对外的接口,state 是组件对内的接口。

主要区别:

  • State是可变的,是一组用于反映组件UI变化的状态集合

  • 而Props对于使用它的组件来说,是只读的,要想修改Props,只能通过该组件的父组件修改。

refs

refs是弹性文件系统,在React中可以获取React元素或DOM元素。

 我们在日常写React代码的时候,一般情况是用不到Refs这个东西,因为我们并不直接操作底层DOM元素,而是在render函数里去编写我们的页面结构,由React来组织DOM元素的更新。凡事总有例外,总会有一些很奇葩的时候我们需要直接去操作页面的真实DOM,这就要求我们有直接访问真实DOM的能力,而Refs就是为我们提供了这样的能力。

React.createRef

React.createRef调用后可以返回一个容器,该容器可以存储被ref所标识的节点,该容器是专人专用的:

class App extends React.Component {  inputRef = React.createRef();  showData = () => {    let input = this.inputRef.current;    console.log(input.value)  }  render() {    return (      <div>        <input ref={this.inputRef} type="text" />        <button onClick={this.showData}>提示</button>      </div>    )  }}
ref的绑定
class Person extends React.Component{    constructor(){        super();        this.handleClick = this.handleClick.bind(this);    }    handleClick(){        // 使用原生的 DOM api 获取焦点        this.refs.myInput.focus();    }    render(){        return (            <div>                <input type="text" ref="myInput" />                <input                    type="button"                    value="点我输入框获取焦点"                    onClick={this.handleClick}/>            </div>        );        }}ReactDOM.render(<Person />, document.getElementById('root'));
  • 当 ref 属性用于 HTML 元素时,使用 React.createRef()或者React.useRef() 创建的 ref 接收底层 DOM 元素作为其 current 属性。

  • 当 ref 属性用于 class 组件时,ref 对象接收组件的挂载实例作为其 current 属性。

  • 你不能在函数组件上使用 ref 属性,因为他们没有实例。函数组件可以使用useRef(),它所返回的对象在组件的整个生命周期内不变。

以上是“React的三大属性是什么”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: React的三大属性是什么

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

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

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

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

下载Word文档
猜你喜欢
  • React的三大属性是什么
    这篇文章主要为大家展示了“React的三大属性是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“React的三大属性是什么”这篇文章吧。React三大属性props组件是封闭的,接收外部数据应...
    99+
    2023-06-29
  • React的三大核心属性是什么
    今天小编给大家分享一下React的三大核心属性是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、State 属性Rea...
    99+
    2023-06-29
  • React三大属性之state有什么用
    这篇文章给大家分享的是有关React三大属性之state有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。React中很多地方需要用到数据,这在React中被叫做状态,我们需要一个专门管理状态的方法,于是st...
    99+
    2023-06-14
  • React三大属性之props怎么用
    这篇文章主要介绍React三大属性之props怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!props功能在于组件间通信(父子组件),首先说说在各种组件中的用法:类组件//父组件传值class Fat...
    99+
    2023-06-14
  • React的三大属性你都知道吗
    目录React三大属性props函数组件类组件state有状态组件和无状态组件setStateprops和state属性的区别refsReact.createRefref的绑定总结R...
    99+
    2024-04-02
  • React三大属性之Refs的使用详解
    目录类组件 函数组件面试常问:React中的refs作用是什么? refs是React中用来取得某个JSX组件或者某个DOM中的一些状态值的时候,用来获取节点的方法。在React官方...
    99+
    2024-04-02
  • React 三大属性之state的使用详解
    目录类组件函数组件setState的坑 React中很多地方需要用到数据,这在React中被叫做状态,我们需要一个专门管理状态的方法,于是state相关的就诞生了。state应该被要...
    99+
    2024-04-02
  • React三大属性之props的使用详解
    目录类组件函数组件props是只读的 组件间通信 上期讲了state,接下来讲讲props。props功能在于组件间通信(父子组件),首先说说在各种组件中的用法: 类组件 //父...
    99+
    2024-04-02
  • React组件三大属性之state,props,refs
    目录1.1基本理解和使用1.1.1 使用React开发者工具调试1.1.2 定义组件的方式1.1.3 注意1.1.4 渲染类组件标签的基本流程1.2 组件实例的三大核心属性之一:st...
    99+
    2024-04-02
  • 深入理解React三大核心属性
    目录1、State属性2、Props 属性3、Refs 属性 (1)字符串形式(2)函数回调形式(3)createRef创建ref容器1、State 属...
    99+
    2024-04-02
  • React组件三大核心属性StatepropsRefs介绍
    目录1.statesetState2.props1.传递单个属性2.批量传递属性对props进行限制对props设置默认值state与props的区别3.ref1.state sta...
    99+
    2023-02-15
    React state props refs React组件属性
  • CSS的三大特性是什么
    这篇文章主要介绍“CSS的三大特性是什么”,在日常操作中,相信很多人在CSS的三大特性是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS的三大特性是什么”的疑惑有所帮...
    99+
    2024-04-02
  • React组件实例三大属性statepropsrefs使用详解
    目录一、 State1.概念2.State的简单用法3. JS绑定事件4.react 绑定事件5.react this指向问题6.修改state值7.代码简写二、props...
    99+
    2024-04-02
  • java三大特性是什么
    java三大特性是:1、面向对象,java最核心的特性之一,将现实世界中的事物抽象成类,并且用对象来描述和处理问题;2、平台无关性,java源代码经过编译后生成的是字节码,而不是机器码;3、高性能,通过即时编译和垃圾回收技术的应用,在运行时...
    99+
    2023-08-04
  • CSS三大特性是什么
    这篇文章主要介绍“CSS三大特性是什么”,在日常操作中,相信很多人在CSS三大特性是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS三大特性是什么”的疑惑有所帮助!接...
    99+
    2024-04-02
  • React组件封装中三大核心属性详细介绍
    目录1、介绍2、state概念演示3、props概念props与state区别4、refs概念refs种类5、父子组件什么是父子组件父子组件之间传值1、介绍 React组件中默认封装...
    99+
    2024-04-02
  • css四大核心属性是什么
    这篇文章主要介绍了css四大核心属性是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。四大核心属性CSS 动画提供了一种相对简单的方法来在大量属性之间平滑过渡。良好的动画界...
    99+
    2023-06-27
  • react三个点指的是什么
    本篇内容介绍了“react三个点指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!react的三个点代表“延展操作符”;在React中...
    99+
    2023-07-04
  • 三个flex属性对元素的影响是什么
    本篇内容主要讲解“三个flex属性对元素的影响是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“三个flex属性对元素的影响是什么”吧!首先我们需要了解,fl...
    99+
    2024-04-02
  • Python面向对象的三大特性是什么
    这篇“Python面向对象的三大特性是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python面向对象的三大特性是什么...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作