zoukankan      html  css  js  c++  java
  • React父子传值中propTypes defaultProps

    /*
    
    React中的组件: 解决html 标签构建应用的不足。         
    
    使用组件的好处:把公共的功能单独抽离成一个文件作为一个组件,哪里里使用哪里引入。
    
    父子组件:组件的相互调用中,把调用者称为父组件,被调用者称为子组件
    
    父子组件传值(react 父子组件通信):
    
        父组件给子组件传值 
    
                1.在调用子组件的时候定义一个属性  <Header msg='首页'></Header>
    
                2.子组件里面 this.props.msg          
    
    
            说明:父组件不仅可以给子组件传值,还可以给子组件传方法,以及把整个父组件传给子组件,可以让子组件给父组件传值。
    
    
        父组件主动获取子组件的数据
    
            1、调用子组件的时候指定ref的值 <Header ref='header'></Header>      
            
            2、通过this.refs.header  获取整个子组件实例  (dom(组件)加载完成以后获取 )
    */
    
    
    import React, { Component } from 'react';
    
    import Header from './Header';
    
    import '../assets/css/index.css';
    
    class Home extends Component {
    
        constructor(props){
            super(props);        
            this.state={ 
              title:'首页组件',
              count:20
            }
        }
        render() {
          return (
            <div>                  
    
                {/* <Header title={this.state.title}  /> */}
    
    
                 {/* <Header/>  */}
    
    
                  {/* <Header title={this.state.title} num='aaaaaaaaaaaaa' />  */}
    
    
                  <Header title={this.state.title} num={this.state.count} />
              <br />
    
              <hr />
    
                <br />
    
                这是首页组件的内容
                
           
            </div>
          );
        }
      }
      export default Home;
      
    import React, { Component } from 'react';
    /*
    父组件给子组件传值:
        defaultProps:父子组件传值中,如果父组件调用子组件的时候不给子组件传值,可以在子组件中使用defaultProps定义的默认值
        propTypes:验证父组件传值的类型合法性
    
                1、引入import PropTypes from 'prop-types';
    
                2、类.propTypes = {
                    name: PropTypes.string
                };
        都是定义在子组件里面
    https://reactjs.org/docs/typechecking-with-proptypes.html
    */
    import PropTypes from 'prop-types';
    class Header extends Component {
        constructor(props) {
            super(props);
            this.state = { 
    
                msg:"我是一个头部组件"
             };
        }
        render() {
            return (
                <div>
                    <h2>---{this.props.title}--- {this.props.num}</h2>
                </div>
            );
        }
    }
    
    //defaultProps   如果父组件调用子组件的时候不给子组件传值,可以在子组件中使用defaultProps定义的默认值
    Header.defaultProps={
    
        title:'标题'
    }
    
    //同行propTypes定义父组件给子组件传值的类型
    
    Header.propTypes={
    
        num:PropTypes.number
    }
    
    
    export default Header;
  • 相关阅读:
    Vue-CLI
    Vue生命周期函数
    构建之法阅读笔记之四
    大二下个人总结
    个人加分项
    对老师的建议
    学习进度条 第九十一-第一百零五天 vue+uniapp app开发学习笔记
    第15周作业
    二进制安装mysql 5.7.31 启动报错/etc/init.d/mysqld: line 239: my_print_defaults: command not found
    获取最小数字
  • 原文地址:https://www.cnblogs.com/loaderman/p/11555876.html
Copyright © 2011-2022 走看看