小鸡啄米之React组件内部的API

dumi:React React Component的文档生成器 杜米 介绍 基于Umi的文档工具可以帮助您开发库和编写文档。 特征 :package: 开箱即用,专注于开发和文档 :rocket: 基于的高性能和可扩展性 :clipboard: 强大的Markdown扩展,支持嵌入演示或导入外部演示和嵌入式演示 使用与指南 要查看更多在线示例和文档,请访问。 发展 $ yarn $ yarn watch $ yarn dev 谁在使用dumi? 自述徽章 使用dumi吗? 添加自述徽章以进行展示: [![dumi](https://img.shields.io/badge/docs by-dumi-blue)](https://github.com/umijs/dumi) 讨论小组 立即下载

组件API

组件API这里指的是在组件内可以使用的方法,主要有:

  • 设置状态:setState
  • 替换状态:replaceState
  • 设置属性:setProps
  • 替换属性:replaceProps
  • 强制更新:forceUpdate
  • 获取DOM节点:findDOMNode
  • 判断组件挂载状态:isMounted (在es6被废弃)

setState

setState(object nextState[, function callback])
参数说明
nextState:将要设置的新状态,该状态会和当前的state合并
callback:可选参数,回调函数。该函数会在setState设置成功,且组件重新渲染后调用。
方法作用:合并nextState和当前state,并重新渲染组件。setState是React事件处理函数中和请求回调函数中触发UI更新的主要方法。
注意:不要在组件内部通过改变this.state来改变状态(不会触发渲染)

setState不会立即处理,会优化批量处理
setState总是会触发重绘,除非定义了条件渲染:shouldComponentUpdate()

注意:this.props 和 this.state 是异步更新的,不能同时依靠这两个状态来确定下一个状态

// 错误用法:
this.setState({
  counter: this.state.counter + this.props.increment,
});
// 可以使用:
this.setState((prevState, props) => ({
  counter: prevState.counter + props.increment
}));
// 或:
this.setState(function(prevState, props) {
  return {
    counter: prevState.counter + props.increment
  };
});

注意:react第一参数传入对象和传入函数是不同的效果
如果传入对象,在一次执行中多次的setState会先放到状态队列中,同步方法执行完毕后才会批处理执行,并且对于相同的state入参会进行合并,同时由于传入的是一个对象,在该对象被传入时state就被解析成数据,所以多次结果中state都是历史值而不是最新值

如果传入函数,则每次函数入参都是最新值

// 多个对象中,this.state值相同
// 假设this.state.x=0
// 第一次:赋值x:0+1
// 第二次:赋值x:0+2
// 第三次:赋值x:0+3
// 最终结果就是x=3
this.setState({
    x:this.state.x+1
})
this.setState({
    x:this.state.x+2
})
this.setState({
    x:this.state.x+3
})
// 传入函数,每次函数入参都是最新值
this.setState((state,props)=>{
    console.log(state) // 0
    return{x:state.x+1}
})
this.setState((state,props)=>{
    console.log(state) // 1
    return{x:state.x+2}
})
this.setState((state,props)=>{
    console.log(state,props) // 3
    return{x:state.x+3}
})

关于setState是同步还是异步:
18.x以上版本,是异步的,会批量更新,无论是否在react的调度流程中!
18.x以下的版本,需要分情况讨论:setTimeout setInterval ,直接在 DOM 上绑定原生事件等。这些都不会走 React 的调度流程,在这种情况下调用 setState ,就是同步的。 否则就是异步的。
需要注意的是: setState 同步执行的情况下, DOM 也会被同步更新,也就意味着如果你多次 setState ,会导致多次更新,这是毫无意义并且浪费性能的。

特别注意:在函数组件中,使用setTimeout去改变state并打印,结果还是原来的state,因为此时获取的state因为闭包的原因,拿的依然是原来的state,如果项观察到可以使用document.querySelector('#id').innerHTML,将state放在该id内容中即可!

useState也是一样的

关于函数组件的回调函数使用state出现闭包问题:

setTimeout(() => {
  setCount(count + 2)
}, 0)

如果在函数组件中的一个函数中,有一个回调函数,使用了state,则会在回调函数创建时产生一个闭包,里面存放了创建时的state值!!所以回调函数执行时拿的是原来的值!可以使用:setCount(count => count + 2)来避免

replaceState

replaceState(object nextState[, function callback])
nextState:将要设置的新状态,该状态会替换当前的state。
callback:可选参数,回调函数。该函数会在replaceState设置成功,且组件重新渲染后调用。
注意:replaceState()方法与setState()类似,但是方法只会保留nextState中状态,原state不在nextState中的状态都会被删除。

setProps

setProps(object nextProps[, function callback])
nextProps:将要设置的新属性,该状态会和当前的props合并
callback:可选参数,回调函数。该函数会在setProps设置成功,且组件重新渲染后调用。
设置组件参数属性,并重新渲染组件。

props相当于组件的数据流,它总是会从父组件向下传递至所有的子组件中。当和一个外部的JavaScript应用集成时,我们可能会需要向组件传递数据或通知React.render()组件需要重新渲染,可以使用setProps()。更新组件,我可以在节点上再次调用React.render(),也可以通过setProps()方法改变组件属性,触发组件重新渲染。

replaceProps

replaceProps(object nextProps[, function callback])
nextProps:将要设置的新属性,该属性会替换当前的props。
callback:可选参数,回调函数。该函数会在replaceProps设置成功,且组件重新渲染后调用。
replaceProps()方法与setProps类似,但它会删除原有 props。

forceUpdate

forceUpdate([function callback])
callback:可选参数,回调函数。该函数会在组件render()方法调用后调用。
forceUpdate()方法会使组件调用自身的render()方法重新渲染组件,组件的子组件也会调用自己的render()。但是,组件重新渲染时,依然会读取this.props和this.state,如果状态没有改变,那么React只会更新DOM。

forceUpdate()方法适用于this.props和this.state之外的组件重绘(如:修改了this.state后???),通过该方法通知React需要调用render()

一般来说,应该尽量避免使用forceUpdate(),而仅从this.props和this.state中读取状态并由React触发render()调用。

findDOMNode

DOMElement findDOMNode(组件元素引用)
返回值:DOM元素DOMElement

如果组件已经挂载到DOM中,该方法返回对应的本地浏览器 DOM 元素。当render返回null 或 false时,this.findDOMNode()也会返回null。从DOM 中读取值的时候,该方法很有用,如:获取表单字段的值和做一些 DOM 操作。

getNodeInstance() {
	// 使用这种方式拿到的是组件的实例,此时是一个react组件
    const nodeInstance = this.refs.navBox;
    // 使用这种方式拿到的是dom元素,可以获取offsetWidth等属性
    let initialNode  =  findDomNode(this.refs.navBox);
}    
function WapShop() {
    return (
        <div>
              <NavBox ref="navBox" />
        </div>
    );
}

isMounted

bool isMounted()
返回值:true或false,表示组件是否已挂载到DOM中

isMounted()方法用于判断组件是否已挂载到DOM中。可以使用该方法保证了setState()和forceUpdate()在异步场景下的调用不会出错。

es6废弃后,使用如下方法来替代:

componentDidMount() {
    this.mounted = true;
}
 
componentWillUnmount() {
    this.mounted = false;
}
React 组件 API React 组件 API 在本章节中我们将讨论 React 组件 API。我们将讲解以下7个方法: 设置状态:setState 替换状态:replaceState 设置属性:setProps 替换属性:replaceProps 强制更新:forceUpdate 获取DOM节点:findDOMNode 判断组件挂载状态:isMounted 设置状态:setState setState(object nextState[, function callback]) 参数说明 nextState,将要设置的新状态,该状态会和当前的state合并 callback,可选参数,回调函数。该 立即下载

相关推荐

别再折腾虚拟机了!手把手教你用WSL2在Windows 11上安装Kali Linux(含汉化与图形界面)

本文详细介绍了如何在Windows 11上通过WSL2安装和配置Kali Linux,包括汉化与图形界面设置。通过WSL2,用户可以享受接近原生性能的Linux体验,同时保持与Windows系统的无缝集成,特别适合网络安全爱好者和开发者。文章还提供了常见问题解决和性能优化建议,帮助用户高效使用Kali工具集。

weixin_42525369的博客 323

React入门--------组件API

setState 参数:nextState(object),[callback(function)] 设置nextState的某个键值。通常如果希望在某个事件或某个回调中来重新渲染组件,setState是一个最常用的触发方法,因为我们把UI内容跟state状态直接绑定在一起,一旦state发生改变并触动了绑定的逻辑,那么ui内容自然也会跟着变动: var Component1...

weixin_30407613的博客 125

新手必看:SMIC 0.18um PDK安装保姆级教程(附Cadence IC617环境配置)

本文提供SMIC 0.18um PDK在Cadence IC617环境下的详细安装教程,涵盖环境准备、文件解压、安装脚本运行、环境变量配置及Cadence集成验证等关键步骤,特别针对初学者常见问题提供解决方案,助力快速掌握芯片设计工具配置。

weixin_30522183的博客 494

(十三)react hooks

react hooks

lj1530562965的博客 766

【深度学习新浪潮】Nano Banana(Gemini 2.5 Flash Image)技术解析与开发者实操指南

重新定义了 AI 图像生成的产业标准。它不仅是“平民化的视觉工厂”,更是推动内容生产从“创意试错”转向“精准制造”的关键工具。未来,随着视频生成能力的加入(谷歌计划支持“文字指令 - 动态场景 - 多平台适配”全流程),Nano Banana 有望进一步颠覆影视、广告等领域的创作范式。:批量生成多场景图,模特姿态自然,服装褶皱和材质细节高度一致,节省 90% 拍摄成本。模型的非正式代号,是一款革命性的 AI 图像生成与编辑工具,主打。:生成细节丰富的厨师特写,光影自然,皮肤纹理和刀具反光逼真。

专注:太空算力、AI infra、异构调度、大模型成本工程 894

(第七章)FAST开发方法

摘要: FAST是一种轻量级、业务驱动的系统分析与开发框架,适用于中小型项目,强调快速交付和组件化开发。其核心包括8个阶段:范围定义、问题分析、需求分析、逻辑设计、决策分析、物理设计、构造测试和安装发布。特点为结构化、用户参与、迭代渐进,适合需求明确且需快速交付的项目。与RUP(重量级)、敏捷(极轻量)相比,FAST更侧重业务分析和模块化开发。软考中可通过口诀“范围问题求逻辑,决策物理构发布”记忆阶段,并掌握五大开发方法(瀑布、原型、FAST、RUP、敏捷)的核心区别及适用场景。

echo的博客 917

react封装下拉组件,可扩展并远程调用接口

react封装下拉组件,可扩展并远程调用接口

qq_60178319的博客 964

vectorCast——Probe point 功能实现故障注入,局部变量打印,断点调试。

选择一个测试用例,选择coverage窗口进行查看。点击edit probe point,如图所示绿色的小圆圈。 选代码中选择需要打断点的地方进行点击。黑色的小圆点都可以选。 点击黑色小圆点,小圆点变绿,表示打断点成功。 此时就可以根据自己的需求在打断点的位置编写一些C语言的命令语句。 点击编译,成功会弹出窗口显示编译成功,失败会在下方报错error,并显示错误的原因。 点击应用保存,选择yes to all就可以了。 点击用例执行就可以看到打断点情况下的执行结果了。

weixin_59334478的博客 2077

「React进阶」 React全部api解读

问题: 1 react暴露的api有哪些,该如何使用? 2 react提供了哪些自测性能的手段? 3 ref既然不能用在函数组件中,那么父组件如何控制函数子组件内的state和方法? 4 createElement和cloneElement有什么区别,应用场景是什么? 5 react内置的children遍历方法,和数组方法,有什么区别? 6 react怎么将子元素渲染到父元素之外的指定容器中? … 组件类 组件类,详细分的话有三种类,第一类说白了就是我平时用于继承的基类组件Component,PureC

weixin_43484007的博客 3097

Docker:快速部署 Temporal 工作流引擎的技术指南

Temporal是一个开源的分布式工作流引擎,适用于复杂业务流程(如订单处理、支付流程等),提供状态持久化、自动重试、多语言SDK支持等特性。部署简单,支持Docker Compose,包含核心服务、Web UI及数据库。以TypeScript为例,开发者可快速编写工作流(如订单处理)和Worker,通过CLI或SDK启动和管理。Temporal简化了分布式系统的可靠性设计,适合电商、自动化任务等场景。

木头 643

React (七)

React 组件 API 在本章节中我们将讨论 React 组件 API。我们将讲解以下7个方法: 设置状态:setState 替换状态:replaceState 设置属性:setProps 替换属性:replaceProps 强制更新:forceUpdate 获取DOM节点:findDOMNode 判断组件挂载状态:isMounted 设置状态:setSta

shi199434的博客 291

14、X射线图像处理与特征提取全解析

本文全面解析了X射线图像处理与特征提取的关键技术,涵盖图像预处理、滤波、边缘检测、分割与恢复等流程,并深入探讨了几何特征(如面积、周长、圆度、椭圆拟合)、强度特征(均值、方差、对比度)、傅里叶描述符、不变矩(Hu矩、Gupta矩)以及局部描述符(SIFT、SURF)和稀疏表示方法。同时介绍了特征选择的过滤法、包装法和嵌入法,并结合Matlab代码示例展示了各类特征的实际提取过程。文章最后总结了当前技术的应用现状,并展望了深度学习在X射线图像分析中的未来潜力。

pz89012345的博客 134

React 组件API

一、设置状态 setState setState(object nextState[, function callback]) nextState 将要设置的新状态,该状态汇和当前的state合并 callback 可选参数,非必填,回调函数。该函数会在setState设置成功,且组件重新渲染后调用。 setState是React事件处理函数中和请求回调函数中触发UI更新的主要方法。 class Counter extends React.Component{ constructor(props

apple20154350217的博客 369

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

react常用api

允许组件在Props没有改变的情况下跳过渲染-----解决父组件发生变化,子组件在没有的时候,不再重新渲染子组件。React组件的默认渲染机制:只要父组件重新渲染子组件就会重新渲染。在组件每次重新渲染的时候缓存计算的结果。在组件多次重新渲染的时候缓存函数。使ref暴露DOM节点给父组件。使ref暴露DOM节点给父组件。一般用于比较复杂的状态管理。

poguanba的博客 968

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

React类组件调用函数组件的方法及使用函数组件的state变量

函数组件内容如下,主要使用到了react hook, https://react.docschina.org/docs/hooks-overview.html hook概览 https://react.docschina.org/docs/hooks-faq.html#can-i-make-a-ref-to-a-function-component import React, {useState, useRef, useImperativeHandle, forwardRef } ...

qq_40315971的博客 9139

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

React核心API全解析

React核心API主要分为组件类API、HookAPI和工具API。组件类API包括Component/PureComponent基类、createElement/cloneElement元素操作方法;HookAPI涵盖状态管理(useState/useReducer)、副作用处理(useEffect/useLayoutEffect)、性能优化(useMemo/useCallback)等;工具API包含Context、Portal等高级功能。文章详细解析了各类API的使用场景和最佳实践,并提供了自定义Ho

油墨香^-^的博客 501

组件 API

ReactComponent React 组件实例在渲染的时候创建。这些实例在接下来的渲染中被重复使用,可以在组件方法中通过 this 访问。唯一一种在 React 之外获取 React 组件实例句柄的方式就是保存 React.render 的返回值。在其它组件内,可以使用 refs 得到相同的结果。 setState setState(object nextState[, function callback]) 合并 nextState 和当前 state。这是在事件处理函数中和请求回调函数中触发 UI

weixin_54904421的博客 280

React组件API

虚拟DOMReact之所以快,是因为它不直接操作DOM。React将DOM结构存储在内存中,然后同render()的返回内容进行比较,计算出需要改动的地方,最后才反映到DOM中。 此外,React实现了一套完整的事件合成机制,能够保持事件冒泡的一致性,跨浏览器执行。甚至可以在IE8中使用HTML5的事件。 大部分情况下,我们都是在构建React的组件,也就是操作虚拟DOM。但是有时候我们需要访问

淡淡的倔强的博客 1997

react 封装api组件_如何将React Context API与功能组件一起使用

react 封装api组件In this article, we will create a small app in React using a Hackernews API 在本文中,我们将使用Hackernews API在React中创建一个小型应用程序 This article assumes that you have a basic understanding of React an...

weixin_26750481的博客 669

react组件API的7个方法

React组件API的7个方法:一、setState 设置状态 setState(object nextState[, function callback]) setState是React事件处理函数中和请求回调函数中触发UI更新的主要方法。注意: 1、不能再组件内部通过this.state修改状态 原因:该状态会在调用setState()后被替换 2、setState()不会立即改变this.

yanchuan1990的专栏 1859

React 组件的API(组件实例)介绍

React 组件实例在渲染的时候(实例化)创建,这些实例在接下来渲染中会被重复使用。要调用组件上的API,首先需要获取对组件的引用。在组件方法内部可以通过this访问,在组件外唯一访问组件方法就是通过React.render的返回值,在其它组件内访问组件,可以使用refs获得对组件的引用。 设置状态:setState替换状态:replaceState设置属性setProps替换属

3223

React学习:状态(State) 和 属性(Props)

React :元素构成组件,组件又构成应用。 React核心思想是组件化,其中 组件 通过属性(props) 和 状态(state)传递数据。 State 与 Props 区别 props 是组件对外的接口,state 是组件对内的接口。组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下层组件需要使用上层组件的数据或方法,上层组件就可以通过下层组件...

若水弹丸之地 3万+
上一篇: 小鸡啄米之React Map遍历中的key
下一篇: React Hooks
天落枫
博客等级 码龄10年 91粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值