周大胖子 发表于 2022-4-27 11:45:55

React17 父子组件传值,函数、和类的子组件接收区别

先上主的
import './App.css';
import Hdeder from './page/header/header';
import React from 'react';
import Footer from './page/footer/footer';

// function App() {
//   return (
//   <div className="App">
//         <h1>主页</h1>
//         <Hdeder name={'王三岁'}age={'29'} ></Hdeder>
//   </div>
//   );
// }
// 问题组件渲染两遍

class App extends React.Component{

render(){
    return (
      <section>
      主页
         {/* <Hdeder name={'王三岁'}age={'29'} ></Hdeder> */}
         <Hdedername={'王三岁'}age={29} />
         <Footername={'孔大力'}age={31}></Footer>
      </section>
    )
}
}


export default App;

周大胖子 发表于 2022-4-27 11:46:36

上函数类型接收传参
import React from "react";
// import { ReactPropTypes } from "react";额 这个哪来的
import ReactType from "prop-types";

function Hdeder(props){
    console.log(props)
    return (
      <h1> 我认识 {props.name} 那年, 她 {props.age} 岁 </h1>
    )
}


// 1. 设置传参的默认值
Hdeder.defaultProps={
    name:'张三',
    age:78
}

// 2.在子组件中 如何校验参数类型
// 通过propTypes    需要安装npm install prop-types

Hdeder.propTypes={
    name: ReactType.string ,
    age:ReactType.number
}

export default Hdeder;

周大胖子 发表于 2022-4-27 11:47:00

上类接收传参
import React from "react";
import ReactType from "prop-types";

class Footer extends React.Component{
    constructor(props){
      super();
      this.props = props;

    }

    render(){
      return (
            <section>
                {this.props.name} 真俊
            </section>
      );
    }


    // 1、设置默认值
    static defaultProps ={
      name:'张三',
      age:78
    }

    // 2.验证传递参数的类型
    static propTypes = {
      name: ReactType.string ,
      age:ReactType.number
    }
}

export default Footer;
页: [1]
查看完整版本: React17 父子组件传值,函数、和类的子组件接收区别