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;
  • 相关阅读:
    numpy 基础 —— np.linalg
    图像旋转后显示不完全
    opencv ---getRotationMatrix2D函数
    PS1--cannot be loaded because the execution of scripts is disabled on this system
    打开jnlp Faild to validate certificate, the application will not be executed.
    BATCH(BAT批处理命令语法)
    oracle vm virtualbox 如何让虚拟机可以上网
    merge 实现
    Windows batch,echo到文件不成功,只打印出ECHO is on.
    python2.7.6 , setuptools pip install, 报错:UnicodeDecodeError:'ascii' codec can't decode byte
  • 原文地址:https://www.cnblogs.com/loaderman/p/11555876.html
Copyright © 2011-2022 走看看