【 React 】state和props有什么区别?

1. state

一个组件的显示形态可以由数据状态和外部参数所决定,而数据状态就是state,一般在constructor中初始化
当需要修改里面的值的状态需要通过调用setState来改变,从而达到更新组件内部数据的作用,并且重新调用组件render方法。如下面的例子:

class Button extends React.Component{constructor() {super();this.state = {count: 0,}}updateCount() {this.setState((prevState, props) => {return { count:prevState.count + 1};});}render(){return(<button onClick={() => this.updateCount()}>Clicked  {this.state.count} times</button>)}
}

setState 还可以接受第二个参数,他是一个函数,会在setState调用完成并且组件开始重新渲染时调用,可以用来监听渲染是否完成

this.setState({name:'supersharerui'},()=>console.log('setState finished')
)

2.props

React 的核心思想就是组件化思想,而且页面会被切分成一些独立的、可复用的组件
组件从概念上看就是一个函数,可以接受一个参数作为输入值,这个参数就是props,所以可以把props理解为从外部传入组件内部的数据
react 具有单项数据流的特性,所以他的主要作用是从父组件向子组件中传递数据
props除了可以传递字符串,数字,还可以传递对象,数组甚至回调函数,如下

class Welcome extends React.Component {render (){return <h1> hello { this.props.name }</h1>}
}
const element=<Welcome name='rui' onNameChange={this.handleName}/>

上述name与onNameChange 方法都能在子组件的props变量中访问
在子组件中,props在内部不可改变的,如果想要改变他,只能通过外部组件传入新的props来重新渲染子组件,否则子组件的props和展示形式不会改变

3.区别

相同点:

  • 两者都是JavaScript对象
  • 两者都是用于保存信息
  • props和state都能触发渲染更新

区别

  • props 是外部传递给组件的,而 state 是在组件内被组件自己管理的,一般在 constructor 中初始化
  • props 在组件内部是不可改变的,但 state 在组件内部可以进行修改
  • state 是多变的、可以修改的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云DSW做AI绘画时的显卡选择A10?V100?

V100是Volta架构&#xff0c;A10是Ampere架构&#xff0c;架构上讲A10先进点&#xff0c;其实只是制程区别&#xff0c;用起来没区别。 V100是HBM的内存读取&#xff0c;带宽大&#xff0c;但是DDR5的。 二块卡都是全精度为主的算力卡&#xff0c;半精度优势不明显。 需要用…

uniapp 开发app,如何使用模拟器

1、开发app &#xff0c;设置模拟器 &#xff08;uniapp 如何设置模拟器&#xff09; https://blog.csdn.net/sweetsoft/article/details/130727169 2、运行到模拟器 注意&#xff1a;1、模拟器所在的位置&#xff1a;“D:\Program Files\Nox\bin”&#xff0c;在该文件夹下找…

FPN(Feature Pyramid Network)

参考&#xff1a; 【目标检测】FPN(Feature Pyramid Network) - 知乎 Feature pyramid network是CVPR2017年的一篇文章&#xff0c;它在目标检测中融入了特征金字塔&#xff0c;提高了目标检测的准确率&#xff0c;尤其体现在小物体的检测上。 1. 动机(Motivation) 识别不同…

【三两波折】char *foo[]和char(*foo)[]有何不同?

1、先谈优先级 最高级别 —— 有四个&#xff0c;他们并不像运算符&#xff1a; []数组下标左到右结合()用于&#xff08;表达式&#xff09; or 函数名(形参表)左到右结合.读取结构体成员左到右结合->读取结构体成员&#xff08;通过指针&#xff09;左到右结合 第二级别…

【读书笔记】针对ICS的ATTCK矩阵详解(一)

Techniques - ICS | MITRE ATT&CKhttps://attack.mitre.org/techniques/ics/ 一、初始访问&#xff08;Initial Access&#xff09; 该阶段&#xff1a;攻击者正在尝试进入ICS环境。 初始访问包括攻击者可能用作入口向量&#xff0c;从而可以在 ICS 环境中获得初始立足点的…

pytorch实现分割模型TransUNet

TransUNet是一个非常经典的图像分割模型。该模型出现在Transformer引入图像领域的早期&#xff0c;所以结构比较简单&#xff0c;但是实际上效果却比很多后续花哨的模型更好。所以有必要捋一遍pytorch实现TransUNet的整体流程。 首先&#xff0c;按照惯例&#xff0c;先看一下…

逼疯快递员的送货上门,谁来背锅?

快递上门的问题近几年来一直争论不休。 最近&#xff0c;随着新修订的《快递市场管理办法》正式实施&#xff0c;这个话题又成为了焦点。 消费者希望快递能够送上门省去麻烦&#xff0c;快递员希望统一送到代收点提高效率。 是消费者要求太高&#xff1f;快递员太过怠慢&…

LightDB24.1插件oracle_fdw需要支持oracle.date和oracle.varchar2类型

背景介绍 oracle.date和oracle.varchar2是LightDB中新增的类型&#xff0c;对应于Oracle数据库的date和varchar2类型。oracle_fdw是第三方插件&#xff0c;所以不支持oracle.date和oracle.varchar2类型。从LightDB24.1版本开始&#xff0c;oracle_fdw插件开始支持oracle.date和…

理解自相关图AC和偏自相关图PAC Plots

when we talk about the time-series data, many factors affect the time series, but the only thing that affects the lagged version of the variable is the time series data itself. by Yugesh Verma 时序数据按照时间点的先后顺序进行排列,变化是在邻近的时间段之间发…

2.1基本算法之枚举1978:生理周期

人生来就有三个生理周期&#xff0c;分别为体力、感情和智力周期&#xff0c;它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天&#xff0c;人会在相应的方面表现出色。例如&#xff0c;智力周期的高峰&#xff0c;人会思维敏捷&#xff0c;精力容易高…

[金三银四] 系统调用相关

2.36 系统调用的详细流程 Linux 在x86上的系统调用通过 int 0x80 实现&#xff0c;用系统调用号来区分入口函数。操作系统实现系统调用的基本过程是&#xff1a; 应用程序调用库函数&#xff08;API&#xff09;&#xff1b;API 将系统调用号存入寄存器&#xff08;EAX&#…

CKA备考攻略:掌握Pod日志收集,事半功倍的秘诀!

往期精彩文章 : 提升CKA考试胜算&#xff1a;一文带你全面了解RBAC权限控制&#xff01;揭秘高效运维&#xff1a;如何用kubectl top命令实时监控K8s资源使用情况&#xff1f;CKA认证必备&#xff1a;掌握k8s网络策略的关键要点提高CKA认证成功率&#xff0c;CKA真题中的节点维…

稳定性三——wachdog机制与分析发方法

文章目录 1. 介绍2 watchdog 机制2.1 初始化2.2 添加Watchdog监测对象2.3 监测机制 3 问题分析3.1 日志分类3.2 定位3.3 场景还原 4. 实例分析5. 总结 1. 介绍 最早引入Watchdog是在单片机系统中&#xff0c;由于单片机的工作环境容易受到外界磁场的干扰&#xff0c;导致程序“…

uniapp上拉加载、下拉刷新

我这个是自定义header、main、和footer的布局&#xff0c;是盒子中的上拉加载、下拉刷新&#xff0c;不是页面的&#xff0c;废话不说&#xff0c;直接上代码&#xff01; <template><view class"assembly"><u-navbar title"个人中心" lef…

2.JavaWebMySql基础

导语&#xff1a; 一、数据库基本概念 1.什么是数据库 2.关于MySql数据库 二、MySQL的安装与卸载 安装步骤&#xff1a; 卸载步骤&#xff1a; 三、MySQL服务操作 1.服务启动和关闭&#xff1a; 2.登录和退出MySQL&#xff1a; 3.服务自启动&#xff1a; 4.命令行登…

Python实现线性查找算法

Python实现线性查找算法 以下是使用 Python 实现线性查找算法的示例代码&#xff1a; def linear_search(arr, target):"""线性查找算法:param arr: 要搜索的数组:param target: 目标值:return: 如果找到目标值&#xff0c;返回其索引&#xff1b;否则返回 -1…

linux系统 QT 处理键盘Ctrl+C信号

linux系统 QT 处理键盘CtrlC信号 1 设置CtrlC信号处理函数 CtrlC运行 &#xff0c;serialPort不能用 .h public:explicit axisControl(axisInfo *axisinf,QWidget *parent nullptr);~axisControl();// 成员函数的CtrlC信号处理程序static void handleCtrlC(int signal);//…

【玩转Linux】有关Linux权限

目录 一.Linux权限的概念 1. 权限的本质 2.Linux中的用户 3.Linux中的权限管理 (1)文件访问者的分类 (2)文件类型和访问权限&#xff08;事物属性&#xff09; ①文件基本权限 ②文件权限值的表示方法 (3)文件访问权限的相关设置方法 ① 用 户 表 示 符 / - 权 …

EKF+PF的MATLAB例程

EKF+PF 扩展卡尔曼滤波与粒子滤波的MATLAB程序,有中文注释 程序源码 % EKF+PF效果对比 % author:Evand % 作者联系方式:evandjiang@qq.com(除前期达成一致外,咨询需付费) % date: 2024-1-10 % Ver2 clear;clc;close all; rng(0); %% 参数设置 N = 100; %粒子总数

c++之迭代器与反向迭代器

&#xff09; 正向迭代器迭代器的变量与typedef与模版operator()operator--()operator*()operator->() 反向迭代器模版与typedef与变量operator()operator--()operator*()operator->() 正向迭代器 以链表的迭代器为例 具体的代码以及可以看上一篇链表的文章:链表 迭代器的…