React中的State与Props
一、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的更多相关文章
- React中的state与props的再理解
props可以看做是 property 的缩写的复数,可以翻译为属性,类似于HTML 标签的自定义属性.在大多数React教程里讲 state 和 props 主要的区别在于 props 是不可变的, ...
- React组件的state和props
React组件的state和props React的数据是自顶向下单向流动的,即从父组件到子组件中,组件的数据存储在props和state中.实际上在任何应用中,数据都是必不可少的,我们需要直接的改变 ...
- 如何理解react中的super() super(props)
class WebSite extends React.Component { constructor() { super(); this.state = { name: "菜鸟教程&quo ...
- react中使用prop-types检测props数据类型
一.为什么使用prop-types 在多人开发时,当被人使用自己定义的组件时,有可能出现类型传错的情况,而在自己的组件上加上prop-types,他可以对父组件传来的props进行检查,加入父组件中想 ...
- React中state和props分别是什么?
整理一下React中关于state和props的知识点. 在任何应用中,数据都是必不可少的.我们需要直接的改变页面上一块的区域来使得视图的刷新,或者间接地改变其他地方的数据.React的数据是自顶向下 ...
- Immutable 详解及 React 中实践
本文转自:https://github.com/camsong/blog/issues/3 Shared mutable state is the root of all evil(共享的可变状态是万 ...
- React中props与state
以下内容均为个人理解. 1.state: 在react中,state可以看成管理页面状态的集合(实则一个对象而已),库里面的成员均为页面渲染变量,整个页面为一个状态机,当state发生变化时,页面会重 ...
- React中state与props介绍与比较
一.state 1.state的作用 state是React中组件的一个对象.React把用户界面当做是状态机,想象它有不同的状态然后渲染这些状态,可以轻松让用户界面与数据保持一致. React中,更 ...
- React中Props 和 State用法
React中Props 和 State用法 1.本质 一句话概括,props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下 ...
随机推荐
- c# Aspose.Cells 通过Excel模板生产excel数据再打印
多的不说,我们先来利用Northwind做两个小demo.先说说Aspose.Cells的模板语法: &=DataSource.Field,&=[DataSource].[Field] ...
- Eventbus的功能
Eventbus的功能 http://masstransit-project.com/ MassTransit is a free, open source, lightweight message ...
- 腾讯明眸极速高清升级2.0,助力韩国赛事超高清5G直播
近期,由腾讯云联合韩国CUDO通信研究所及intel推出的tile方式的viewport流服务编码,已正式通过测试.届时韩国最新5G网络将基于腾讯明眸-极速高清2.0和腾讯云直播产品能力,在韩国国内率 ...
- php常用的验证
<?php namespace Vendor\Func; /** * 常用的验证 * Class Verify * @package Vendor\Func */ class Verify { ...
- Python的线程、进程和协程
进程:一个进程就是一个正在运行的程序,它是计CPU分配资源的最小单位.每个进程都有自己独立的内存空间.能同时执行的进程数最多不超过内核数,也就是每个内核 同一时刻只能执行一个进程.那么多进程就是能[同 ...
- 【C++札记】标准输入与输出
概述 C语言中使用函数scanf和printf作为标准输入和输出,在C++中引入了类cin和cout进行标准输入和输出,所需头文件为<iostream>,命名空间是std.这里所说的标准输 ...
- 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 ...
- enum类型的标签内容根据语言的取法
昨天做了一个开发,说要取enum里面英文label 例如 JournalType 枚举值有 transfer\profit/loss 但是在中文的AX系统时会显示“转移\盈亏”, 但是客户又 ...
- spring boot使用@Aspect记录日志(请求参数,响应结果)
- Spring Cloud Zuul源码
一.Zuul源码分析(初始化流程.请求处理流程)