React生命周期与父子组件间通信知识点有哪些


今天小编给大家分享一下React生命周期与父子组件间通信知识点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。很多的事物都有从创建到销毁的整个过程,这个过程称之为是生命周期;React组件也有自己的生命周期,了解组件的生命周期可以让我们在最合适的地方完成自己想要的功能;生命周期和生命周期函数的关系:生命周期是一个抽象的概念,在生命周期的整个过程,分成了很多个阶段;比如装载阶段(Mount),组件第一次在DOM树中被渲染的过程;比如更新过程(Update),组件状态发生变化,重新更新渲染的过程;比如卸载过程(Unmount),组件从DOM树中被移除的过程;React内部为了告诉我们当前处于哪些阶段,会对我们组件内部实现的某些函数进行回调,这些函数就是生命周期函数:比如实现componentDidMount函数:组件已经挂载到DOM上时,就会回调;比如实现componentDidUpdate函数:组件已经发生了更新时,就会回调;比如实现componentWillUnmount函数:组件即将被移除时,就会回调;我们可以在这些回调函数中编写自己的逻辑代码,来完成自己的需求功能;我们谈React生命周期时,主要谈的类的生命周期,因为函数式组件是没有生命周期函数的我们先来了解一下最基础、最常用的生命周期函数:{message}是程序员的第一个代码!如果不初始化 state 或不进行方法绑定,则不需要为 React 组件实现构造函数。constructor中通常只做两件事情:通过给 this.state 赋值对象来初始化内部的state;为事件绑定实例(this);componentDidMount() 会在组件挂载后(插入 DOM 树中)立即调用。componentDidMount中通常进行哪里操作呢?依赖于DOM的操作可以在这里进行;在此处发送网络请求就最好的地方;(官方建议)可以在此处添加一些订阅(会在componentWillUnmount取消订阅);componentDidUpdate() 会在更新后会被立即调用,首次渲染不会执行此方法。当组件更新后,可以在此处对 DOM 进行操作;如果你对更新前后的 props 进行了比较,也可以选择在此处进行网络请求;(例如,当 props 未发生变化时,则不会执行网络请求)。componentWillUnmount() 会在组件卸载及销毁之前直接调用。在此方法中执行必要免费云主机域名的清理操作;例如,清除 timer,取消网络请求或清除在 componentDidMount() 中创建的订阅等;除了上面介绍的生命周期函数之外,还有一些不常用的生命周期函数:getDerivedStateFromProps:state 的值在任何时候都依赖于 props时使用;该方法返回一个对象来更新state;getSnapshotBeforeUpdate:在React更新DOM之前回调的一个函数,可以获取DOM更新前的一些信息(比如说滚动位置);shouldComponentUpdate:该生命周期函数很常用,但是我们等待讲性能优化时再来详细讲解;另外,React中还提供了一些过期的生命周期函数,这些函数已经不推荐使用。在开发过程中,我们会经常遇到需要组件之间相互进行通信:比如App可能使用了多个Header,每个地方的Header展示的内容不同,那么我们就需要使用者传递给Header一些数据,让其进行展示;又比如我们在Main中一次性请求了Banner数据和ProductList数据,那么就需要传递给他们来进行展示;也可能是子组件中发生了事件,需要由父组件来完成某些操作,那就需要子组件向父组件传递事件;总之,在一个React项目中,组件之间的通信是非常重要的环节;父组件在展示子组件,可能会传递一些数据给子组件:父组件通过 属性=值 的形式来传递给子组件数据;子组件通过 props 参数获取父组件传递过来的数据。对于传递给子组件的数据,有时候我们可能希望进行验证,特别是对于大型项目来说:当然,如果你项目中默认继承了Flow或者TypeScript,那么直接就可以进行类型验证;但是,即使我们没有使用Flow或者TypeScript,也可以通过 prop-types 库来进行参数验证;从 React v15.5 开始,React.PropTypes 已移入另一个包中:prop-types 库你可以通过 PropTypes.element 来确保传递给组件的 children 中只包含一个元素。您可以通过配置特定的 defaultProps 属性来定义 props 的默认值:从 ES2022 开始,你也可以在 React 类组件中将 defaultProps 声明为静态属性。这种现代语法需要添加额外的编译步骤才能在老版浏览器中工作。defaultProps 用于确保 this.props.name 在父组件没有指定其值时,有一个默认值。propTypes 类型检查发生在 defaultProps 赋值后,所以类型检查也适用于 defaultProps如果你在常规开发中使用函数组件,那你可能需要做一些适当的改动,以保证 PropsTypes 应用正常。假设你有如下组件:如果要添加 PropTypes,你可能需要在导出之前以单独声明的一个函数的形式,声明该组件,具体代码如下:接着,可以直接在 HelloWorldComponent 上添加 PropTypes:某些情况,我们也需要子组件向父组件传递消息:在vue中是通过自定义事件来完成的;在React中同样是通过props传递消息,只是让父组件给子组件传递一个回调函数,在子组件中调用这个函数即可;我们这里来完成一个案例:将计数器案例进行拆解;将按钮封装到子组件中:CounterButton;CounterButton发生点击事件,将内容传递到父组件中,修改counter的值;app.jsxsubCounter.jsxaddCounter.jsx以上就是“React生命周期与父子组件间通信知识点有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。

相关推荐: linux下如何安装最新版的nodejs

这篇文章主要介绍了linux下如何安装最新版的nodejs的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux下如何安装最新版的nodejs文章都会有所收获,下面我们一起来看看吧。Linux的版本有:Deepin、Ubuntu…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 02/24 11:46
下一篇 02/24 11:47

相关推荐