一、State

1、什么是 state

一个组件的显示形态可以由数据状态和外部参数决定,其中,数据状态为 state,外部参数为 props

2、state 的使用

组件初始化时,通过 this.state 给组件设置一个初始的 state,在第一次 render 时就会用这个数据渲染组件

class ItemList extends React.Component {
constructor() {
super();
this.state = {
data: '123'
};
}
render() {
return ({
this.state.data
})
}
}

3、setState 修改数据

state 可以通过 this.setState() 来修改数据,() 中接收一个对象或函数,只需要传入要更新的部分即可

注意:调用 this.setState 方法时,React 会重新调用 render 方法

class ItemList extends React.Component {
constructor() {
super();
this.state = {
name: 'hainiudd',
age: 21,
}
}
componentDidMount() {
this.setState({
age: 22
})
}
}

setState 是异步的,如果接收第二个参数,其内容会在第一个参数调用完成后被调用

4、总结

State 用于组件保存、控制以及修改自己的状态,只能在 constructor 中初始化,是组件的私有属性,不可通过外部访问和修改,通过组件内部的 this.setState 修改时会导致组件重新渲染

二、Props

1、什么是 props

props 可以理解为从外部传入组件内部的数据

2、props 的使用

父组件通过自定义属性进行传值,这里以传 lastName 的值为例:

Parent.js

class Parent extends React.Component {
render() {
return (
<div>
<Child lastName='Liu' />
</div>
)
}
}

子组件通过 this.props 获取,这里接收父组件传过来 lastName 的值

Child.js

class Child extends React.Component {
constructor(props) {
super(props);
this.state = {}
}
render() {
return (
<div>
<h1>My lastname is {this.props.lastName}</h1>
</div>
)
}
}

渲染父组件:

ReactDOM.render(
<div><Parent /></div>,
document.getElementById('root')
);

运行结果:

3、props 的只读性

组件无论是使用函数声明还是 class 声明,都不能改变自身的 props,只有通过父组件重新渲染才可以把新的 props 传入组件中

4、总结

Props 是一个从外部传入组件的参数,用于父组件向子组件传递数据,具有可读性

三、State 与 Props 的区别

1、State 是组件自身的数据,可以改变

2、Props 是外部传入的数据,不可改变

React中的State与Props的更多相关文章

  1. React中的state与props的再理解

    props可以看做是 property 的缩写的复数,可以翻译为属性,类似于HTML 标签的自定义属性.在大多数React教程里讲 state 和 props 主要的区别在于 props 是不可变的, ...

  2. React组件的state和props

    React组件的state和props React的数据是自顶向下单向流动的,即从父组件到子组件中,组件的数据存储在props和state中.实际上在任何应用中,数据都是必不可少的,我们需要直接的改变 ...

  3. 如何理解react中的super() super(props)

    class WebSite extends React.Component { constructor() { super(); this.state = { name: "菜鸟教程&quo ...

  4. react中使用prop-types检测props数据类型

    一.为什么使用prop-types 在多人开发时,当被人使用自己定义的组件时,有可能出现类型传错的情况,而在自己的组件上加上prop-types,他可以对父组件传来的props进行检查,加入父组件中想 ...

  5. React中state和props分别是什么?

    整理一下React中关于state和props的知识点. 在任何应用中,数据都是必不可少的.我们需要直接的改变页面上一块的区域来使得视图的刷新,或者间接地改变其他地方的数据.React的数据是自顶向下 ...

  6. Immutable 详解及 React 中实践

    本文转自:https://github.com/camsong/blog/issues/3 Shared mutable state is the root of all evil(共享的可变状态是万 ...

  7. React中props与state

    以下内容均为个人理解. 1.state: 在react中,state可以看成管理页面状态的集合(实则一个对象而已),库里面的成员均为页面渲染变量,整个页面为一个状态机,当state发生变化时,页面会重 ...

  8. React中state与props介绍与比较

    一.state 1.state的作用 state是React中组件的一个对象.React把用户界面当做是状态机,想象它有不同的状态然后渲染这些状态,可以轻松让用户界面与数据保持一致. React中,更 ...

  9. React中Props 和 State用法

    React中Props 和 State用法 1.本质 一句话概括,props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下 ...

随机推荐

  1. c# Aspose.Cells 通过Excel模板生产excel数据再打印

    多的不说,我们先来利用Northwind做两个小demo.先说说Aspose.Cells的模板语法: &=DataSource.Field,&=[DataSource].[Field] ...

  2. Eventbus的功能

    Eventbus的功能 http://masstransit-project.com/ MassTransit is a free, open source, lightweight message ...

  3. 腾讯明眸极速高清升级2.0,助力韩国赛事超高清5G直播

    近期,由腾讯云联合韩国CUDO通信研究所及intel推出的tile方式的viewport流服务编码,已正式通过测试.届时韩国最新5G网络将基于腾讯明眸-极速高清2.0和腾讯云直播产品能力,在韩国国内率 ...

  4. php常用的验证

    <?php namespace Vendor\Func; /** * 常用的验证 * Class Verify * @package Vendor\Func */ class Verify { ...

  5. Python的线程、进程和协程

    进程:一个进程就是一个正在运行的程序,它是计CPU分配资源的最小单位.每个进程都有自己独立的内存空间.能同时执行的进程数最多不超过内核数,也就是每个内核 同一时刻只能执行一个进程.那么多进程就是能[同 ...

  6. 【C++札记】标准输入与输出

    概述 C语言中使用函数scanf和printf作为标准输入和输出,在C++中引入了类cin和cout进行标准输入和输出,所需头文件为<iostream>,命名空间是std.这里所说的标准输 ...

  7. Django django.core.exceptions.ImproperlyConfigured: WSGI application 'myblog.wsgi.application' could not be loaded; Error importing module.报错

    报错内容 django.core.exceptions.ImproperlyConfigured: WSGI application 'myblog.wsgi.application' could n ...

  8. enum类型的标签内容根据语言的取法

    昨天做了一个开发,说要取enum里面英文label 例如  JournalType   枚举值有   transfer\profit/loss 但是在中文的AX系统时会显示“转移\盈亏”, 但是客户又 ...

  9. spring boot使用@Aspect记录日志(请求参数,响应结果)

  10. Spring Cloud Zuul源码

    一.Zuul源码分析(初始化流程.请求处理流程)