首页 > 其他分享 >01-React-父子组件通讯-函数式组件

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

时间:2023-09-23 12:33:51浏览次数:44  
标签:01 App React Header components 组件 import

在了解父子组件通讯这个知识点的时候,首先要说明清楚一点内容就是什么是父组件什么是子组件,在上一篇 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={'BNTang'} 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;

image-20220410144311627

子组件中校验参数类型

  • 通过 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={'BNTang'} age={18}/>
                <Main/>
                <Footer/>
            </div>
        )
    }
}

export default App;

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

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

image-20220410145022266

标签:01,App,React,Header,components,组件,import
From: https://www.cnblogs.com/lzAurora/p/17724193.html

相关文章

  • 01-React-父子组件通讯
    父子组件通讯父组件将方法传递给子组件,在React当中也会将父组件传递的,数据和函数信息直接存放在子组件当中,的Props属性对象当中React的父子组件通讯的实现其实就是利用,函数的互相调用进行实现完成的Header.js:importReactfrom'react';import'./Header.css';impo......
  • 01-React-组件-TransitionGroup
    TransitionGroup的作用,博主用通俗易懂的话来讲就是一个一组元素添加动画,在我们的实际开发当中有时可能会有这么一个需求就是,在一个页面上,有添加和删除,在做这些操作的时候需要都带上动画,那么这个时候就可以使用TransitionGroup来快速实现。案例App.js:importReactfrom'rea......
  • P6667 [清华集训2016] 如何优雅地求和 -Binomial Sum
    题面有一个多项式函数\(f(x)\),最高次幂为\(x^m\),定义变换\(Q\):\[Q(f,n,x)=\sum_{k=0}^{n}f(k)\binom{n}{k}x^k(1-x)^{n-k}\]现在给定函数\(f\)和\(n,x\),求\(Q(f,n,x)\bmod998244353\)。出于某种原因,函数\(f\)由点值形式给出,即给定\(a_0,a_1,⋯,a_m\)共\(m+1\)个......
  • Flutter/Dart第01天:Dart安装和初体验
    本博客原地址:https://ntopic.cn/p/2023092301/Dart的安装方式有几种:一种是下载源代码,然后编译安装;一种是通过包管理工具进行安装。Dart官方网站分表列出了针对Windows、Linux和MacOS的安装方式:https://dart.dev/get-dart我下面在个人MacOS上介绍brew包管理工具安装方法和过程:......
  • React面试
    1.什么是虚拟DOM?虚拟DOM是真实DOM在内存中的表示,ul的表示形式保存在内存中,并且与实际的DOM同步,这是一个发生在渲染函数被调用和元素在屏幕上显示的步骤,整个过程被称为调和2.类组件和函数组件之间的区别是什么?类组件可以使用其他特性,如状态和生命周期钩子,并且他有this函数组件只......
  • 自我介绍102101631
    自我介绍我叫陈康杰,学号是102101631我来自fzu我平常喜欢看一些历史文我最喜欢的歌手是周杰伦我最喜欢的歌曲是《一路向北》食堂里我最喜欢的是烤盘饭(虽然每次吃饱都花了很多的币)......
  • 用户故事与敏捷开发 读书笔记 01
    软件需求是一个沟通问题,一旦任何一方在沟通中把持绝对地位,项目就会遭受损失。我们需要一种协同工作的方式,让双方都不占绝对主导地位,共同面对感情用事和办公室政治化的资源分配问题。什么是用户故事?每个用户故事代表了一个独立的功能,即用户在一个单一环境中可能做的事情。用户故......
  • React的onChange事件支持冒泡
    React的合成事件,所有事件都冒泡到document,带来的一个方便的地方就是,原本原生事件不支持冒泡的,在React中都支持冒泡例如focus,blur,change,submit,reset,select等事件不支持冒泡,但是在React中,可以使用同名的合成事件来支持冒泡,这样可以带来一个好处,减少事件挂载例如对radio组挂......
  • BootstrapBlazor组件库,Table组件外部导出数据
    BootstrapBlazor组件库,Table组件导出选中行数据问题描述有很多小伙伴在使用BootstrapBlazor组件库的Table组件导出功能时,不知道怎么通过外部按钮来导出数据。解决方案通过@ref当前表格对象来获取数据,然后进行导出操作。Razor代码<Buttonclass="mb-2"Text="导出Table数据"......
  • POI2018
    P5955Pionek题意给出\(n\)个平面向量,要求选择一些向量使它们和的模长最大,输出最大模长。题解假设已知答案向量方向,观察题目可以发现,只有在答案向量方向投影为正的向量才会对结果产生贡献。由此考虑枚举所有方向。对所有向量的极角排序,排序后可以确定选取的向量一定是连续......