React-父子组件通讯-函数式组件

简介: React-父子组件通讯-函数式组件

前言


在了解父子组件通讯这个知识点的时候,首先要说明清楚一点内容就是什么是父组件什么是子组件,在上一篇 React-组件开篇当中我们在 App.js 类组件当中使用到了其它的一些组件,那么 App 就是父组件,被 App 所使用的就是子组件,了解了什么是父子组件之后,介绍要来介绍一下它们之间该如何进行通讯,也就是传递数据和方法,父组件传递数据给子,子传递给父的这么一个过程就是称之为父子组件的通讯。



父组件传递函数式组件


传递方式非常的简单就是在父组件使用子组件的地方,在子组件当中添加一些自定义的一些属性,这样就表示你要给某一个子组件传递一些数据,至于是什么数据就看你自己了,在父组件当中传递了数据给子组件那么在子组件当中该如何拿到对应的数据呢,在 React 当中它会把所有父组件传递的数据都放在一个 props 的对象当中,然后在传递给我们的子组件,由于我们的子组件是一个函数组件,所以它就会把 props 对象传递给构造函数,那么它会传递给我们的构造函数我们就可以在函数的构造形参当中进行获取了:

App.js:

import React from 'react';
import './App.css';
import Footer from "./components/Footer";
import Main from "./components/Main";
import Header from "./components/Header";
class App extends React.Component {
    render() {
        return (
            <div>
                <Header name={'yangbuyiya'} age={18}/>
                <Main/>
                <Footer/>
            </div>
        )
    }
}
export default App;

Header.js:

import React from 'react';
import './Header.css';
function Header(props) {
    console.log(props);
    return (
        <div className={'header'}>我是头部</div>
    )
}
export default Header;




子组件设置参数默认值


Header.js:

import React from 'react';
import './Header.css';
function Header(props) {
    console.log(props);
    return (
        <div className={'header'}>我是头部</div>
    )
}
Header.defaultProps = {
    name: '小灰灰',
    age: 18
}
export default Header;


App.js:

import React from 'react';
import './App.css';
import Footer from "./components/Footer";
import Main from "./components/Main";
import Header from "./components/Header";
class App extends React.Component {
    render() {
        return (
            <div>
                <Header/>
                <Main/>
                <Footer/>
            </div>
        )
    }
}
export default App;




子组件中校验参数类型


  • 通过 propTypes

通过 propTypes 之前首先得要安装一下对应的依赖:

npm install prop-types

官方文档地址:https://zh-hans.reactjs.org/docs/typechecking-with-proptypes.html

Header.js:

import React from 'react';
import './Header.css';
import ReactTypes from 'prop-types';
function Header(props) {
    console.log(props);
    return (
        <div className={'header'}>我是头部</div>
    )
}
Header.defaultProps = {
    name: '小灰灰',
    age: 18
}
Header.propTypes = {
    name: ReactTypes.string,
    age: ReactTypes.number
}
export default Header;

App.js:

import React from 'react';
import './App.css';
import Footer from "./components/Footer";
import Main from "./components/Main";
import Header from "./components/Header";
class App extends React.Component {
    render() {
        return (
            <div>
                <Header name={'yangbuyiya'} age={18}/>
                <Main/>
                <Footer/>
            </div>
        )
    }
}
export default App;

如上都是正常给,来看一个不正常的如下:

<Header name={'yangbuyiya'} age={'18'}/>

最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

相关文章
|
2月前
|
缓存 前端开发 JavaScript
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
🌟蒋星熠Jaxonic,前端探索者。专注React Hooks深度实践,从原理到实战,分享状态管理、性能优化与自定义Hook精髓。助力开发者掌握函数组件的无限可能,共赴技术星辰大海!
React Hooks深度解析与最佳实践:提升函数组件能力的终极指南
|
7月前
|
缓存 前端开发 数据安全/隐私保护
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
如何使用组合组件和高阶组件实现复杂的 React 应用程序?
283 68
|
7月前
|
缓存 前端开发 Java
在 React 中,组合组件和高阶组件在性能方面有何区别?
在 React 中,组合组件和高阶组件在性能方面有何区别?
260 67
|
7月前
|
前端开发 JavaScript 安全
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
除了高阶组件和render props,还有哪些在 React 中实现代码复用的方法?
296 62
|
10月前
|
移动开发 前端开发 API
React 音频播放器组件 Audio Player
本文介绍如何使用React创建音频播放器组件,涵盖核心功能如播放/暂停、进度条、音量控制和时间显示。通过HTML5 `&lt;audio&gt;` 元素和React的声明式状态管理,实现交互式音频播放。常见问题包括控件不响应、进度条无法更新和音量控制失灵,并提供解决方案。此外,还讨论了浏览器兼容性、异步错误处理和性能优化等易错点及避免方法。
728 123
|
9月前
|
前端开发 JavaScript
除了使用Route组件,React Router还有其他方式处理404错误页面吗
除了使用Route组件,React Router还有其他方式处理404错误页面吗
255 58
|
9月前
|
前端开发
React 中高阶组件的原理是什么?
React 中高阶组件的原理是什么?
242 57
|
9月前
|
前端开发 开发者
除了函数组件和类组件,React 还有其他创建组件的方式吗?
除了函数组件和类组件,React 还有其他创建组件的方式吗?
187 57
|
9月前
|
前端开发
如何在React Router中定义404错误页面组件?
如何在React Router中定义404错误页面组件?
242 57
|
9月前
|
前端开发
在 React 中使用高阶组件时,如何避免命名冲突?
在 React 中使用高阶组件时,如何避免命名冲突?
229 56