React 生命周期(顺序)和 组件 通信

很多情况下,我们是通过props来定制组件实例的外观及行为,这样的组件我们称之为无状态/stateless的组件,因为在任何时刻,组件 实例的表现都仅仅取决于外部传入的props属性,与 它自身之前的表现毫无关系,即,它本身没有任何记忆

让一个组件拥有记忆能力,根据自身的状态对同样的刺激做出 不同的反应,React的组件的确引入了状态机的概念state

1. setState 尖端使用的方法 callback

//默认初始化close为false
this.setState({close : true},() => {
//setstate 不会及时修改state , 可以在回调中才能得到true
//得到的为true
console.log(this.state.close)
})
//还是为false
console.log(this.state.close)

1.1. 设置组件初始状态,可以在constructor 中

constructor(props){
    super(props)
    this.state= {
      tag : _tag
    }
}

看下面清晰的图片吧,顺序是

1.componentWillMount 2.componentDidMount

3.componentWillReceiveProps 4.shouldComponentUpdate 5.componentWillUpdate 6-componentDidUpdate (3-6一直重复) 7.componentWillUnmount

1.2. 解释下

componentWillMount 组件实例即将挂接(初次渲染)时被调用 这个方法在整个生命周期中只会被调用一次

componentDidMount() - 组件实例挂接(初次渲染)后被调用 这个方法在整个生命周期中只会被调用一次

componentWillUnmount() - 组件实例即将从DOM树移除时被调用 这个方法在整个生命周期中只会被调用一次。

1.3. 上面3个方法是只会触发一次

componentWillReceiveProps(nextProps) - 组件实例即将设置新属性时被调用 参数nextProps表示即将应用到组件实例上的新属性值。

shouldComponentUpdate(nextProps, nextState) - 组件实例即将重新渲染时被调用 参数nextProps传入即将应用到组件实例上的新属性值,需要return 布尔值 ,return true 表示 需要渲染 ,false 表示不需要渲染

componentWillUpdate(nextProps, nextState) - 组件实例即将重新渲染时被调用 注意:不能在此方法内调用setState()。

componentDidUpdate(prevProps, prevState) - 组件实例重新渲染后被调用

2. React 组件 通信

react是单向数据流

2.1. 父组件 =>> 子组件

父组件 =>> 子组件: 通过 props

2.2. 子组件 =>> 父组件

子组件 =>> 父组件 : 通过 callback

2.3. 子组件 =>> 子组件

子组件 =>> 子组件 : 子组件 =>> 父组件 =>> 子组件 (callback 和props 组合) 也就是· 子组件通过回调改变父组件中的状态,通过props再修改另一个组件的状态

原文地址:https://www.cnblogs.com/passkey/p/10231887.html

时间: 2024-11-08 05:31:47

React 生命周期(顺序)和 组件 通信的相关文章

【React源码分析】组件通信、refs、key和ReactDOM

React源码系列文章,请多支持:React源码分析1 - 组件和对象的创建(createClass,createElement)React源码分析2 - React组件插入DOM流程React源码分析3 - React生命周期详解React源码分析4 - setState机制React源码分析5 -- 组件通信,refs,key,ReactDOMReact源码分析6 - React合成事件系统 1 组件间通信 父组件向子组件通信 React规定了明确的单向数据流,利用props将数据从父组件传

10秒钟理解react生命周期

慎点!这是一篇很水很水的文章, 抄自react中文文档, 本文详细介绍了react生命周期函数执行顺序, 以及各生命周期函数的含义和具体作用. 不同阶段生命周期函数执行顺序 挂载(Mounting) 挂载指的是组件被实例化并插入到dom中 顺序如下: constructor -> getDerivedStateFromProps -> render -> componentDidMount 更新(Updating) 当state变化或者props变化会引起更新 顺序如下: getDeri

React生命周期学习整理

一.React生命周期 React 生命周期分为三种状态 1. 初始化 2.更新 3.销毁 初始化 1.getDefaultProps() 设置默认的props,也可以用dufaultProps设置组件的默认属性. 2.getInitialState() 在使用es6的class语法时是没有这个钩子函数的,可以直接在constructor中定义this.state.此时可以访问this.props 3.componentWillMount() 组件初始化时只调用,以后组件更新不调用,整个生命周期

vue与 react 生命周期

Vue vue里的生命周期是什么? vue实例从创建到销毁的过程称之为vue的生命周期 vue的生命周期各阶段都做了什么? beforeCreate 实例创建前:这个阶段实例的data.methods是读不到的created 实例创建后:这个阶段已经完成了数据观测(data observer),属性和方法的运算, watch/event 事件回调.mount挂载阶段还没开始,$el 属性目前不可见,数据并没有在DOM元素上进行渲染beforeMount:在挂载开始之前被调用:相关的 render

react生命周期方法

每一个组件都有几个你可以重写以让代码在处理环节的特定时期运行的"生命周期方法".方法中带有前缀 will 的在特定环节之前被调用,而带有前缀 did 的方法则会在特定环节之后被调用. react生命周期可分为三个状态以及对应的方法 Mounting(装配) constructor() React组件的构造函数将会在装配之前被调用. componentWillMount() 在渲染前调用,在客户端也在服务端. render() 所有组件类都必须有自己的 render 方法,用于输出组件.

前端005/React生命周期

ES6中React生命周期 一.React生命周期 React生命周期主要包括三个阶段:初始化阶段.运行中阶段和销毁阶段. 在React不同的生命周期里,会依次触发不同的钩子函数. 二.React的生命周期函数 (一).初始化阶段 1.设置组件的默认属性 static defaultProps = { name: 'sls', age:23 }; //or Counter.defaltProps={name:'sls'} 复制代码 2.设置组件的初始化状态 constructor() { sup

vue生命周期和react生命周期对比

一 vue的生命周期如下图所示(很清晰)初始化.编译.更新.销毁 二 vue生命周期的栗子 注意触发vue的created事件以后,this便指向vue实例,这点很重要 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>vue生命周期</title> <script src="../js/vue.js"></

react生命周期知识点

react生命周期知识点 一个React组件的生命周期分为三个部分:实例化.存在期和销毁时. 实例化 组件在客户端被实例化,第一次被创建时,以下方法依次被调用: 1.getDefaultProps2.getInitialState3.componentWillMount4.render5.componentDidMount 当组件在服务端被实例化,首次被创建时,以下方法依次被调用: 1.getDefaultProps2.getInitialState3.componentWillMount4.r

前端(九):react生命周期

一.组件渲染 当组件的props或者state发生改变时,组件会自动调用render方法重新渲染.当父组件被重新渲染时,子组件也会被递归渲染.那么组件是如何渲染的呢? # 方案一 1.state数据 2.JSX模板 3.数据 + 模板 生成真实DOM来显示 4.state发生改变 5.JSX模板 6.数据 + 模板重新结合,生成新的真实的DOM,替换掉以前的DOM 缺陷: 第一次生成了完整的DOM片段 第二次生成了完整的DOM片段,替换第一次的DOM片段,比较耗性能 # 方案二 1.state数