11.React propTypes defaultProps

原创
2019/01/15 09:22
阅读数 85

父组件



/*

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;

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部