老莫的笔记本  
  
查看: 336|回复: 2

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

[复制链接]

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
发表于 2022-4-27 11:45:55 | 显示全部楼层 |阅读模式
先上主的
  1. import './App.css';
  2. import Hdeder from './page/header/header';
  3. import React from 'react';
  4. import Footer from './page/footer/footer';

  5. // function App() {
  6. //   return (
  7. //     <div className="App">
  8. //         <h1>主页</h1>
  9. //         <Hdeder name={'王三岁'}  age={'29'} ></Hdeder>
  10. //     </div>
  11. //   );
  12. // }
  13. // 问题组件渲染两遍

  14. class App extends React.Component{

  15.   render(){
  16.     return (
  17.       <section>
  18.         主页
  19.          {/* <Hdeder name={'王三岁'}  age={'29'} ></Hdeder> */}
  20.          <Hdeder  name={'王三岁'}  age={29} />
  21.          <Footer  name={'孔大力'}  age={31}></Footer>
  22.       </section>
  23.     )
  24.   }
  25. }


  26. export default App;
复制代码
回复

使用道具 举报

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
 楼主| 发表于 2022-4-27 11:46:36 | 显示全部楼层
上函数类型接收传参
  1. import React from "react";
  2. // import { ReactPropTypes } from "react";  额 这个哪来的
  3. import ReactType from "prop-types";

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


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

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

  17. Hdeder.propTypes={
  18.     name: ReactType.string ,
  19.     age:ReactType.number
  20. }

  21. export default Hdeder;
复制代码
回复

使用道具 举报

662

主题

878

帖子

5145

积分

超级版主

Rank: 8Rank: 8

积分
5145
 楼主| 发表于 2022-4-27 11:47:00 | 显示全部楼层
上类接收传参
  1. import React from "react";
  2. import ReactType from "prop-types";

  3. class Footer extends React.Component{
  4.     constructor(props){
  5.         super();
  6.         this.props = props;

  7.     }

  8.     render(){
  9.         return (
  10.             <section>
  11.                 {this.props.name} 真俊
  12.             </section>
  13.         );
  14.     }


  15.     // 1、设置默认值
  16.     static defaultProps ={
  17.         name:'张三',
  18.         age:78
  19.     }

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

  26. export default Footer;
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表