• props和state


    React组件的数据分为2种,prop和state。prop是组件的对外接口,组件不应该修改props的值。state是组件的内部状态,必须是一个js对象,存在的意义角色被修改。

    prop:

    1.prop支持多种数据类型。当prop的类型不是字符串类型时,在JSX中必须使用花括号把prop值包住。

    2.在父组件中给prop赋值

    class ControlPanel extends Component{
      render(){
        console.log('enter ControlPanel render');
        return(
          <div style={style}>
            <Counter caption='First'/>
            <Counter caption='Second' initValue={10}/>
            <Counter caption='Third' initValue={20}/>
            <button onClick={()=>this.forceUpdate()}>Click me to re-render!</button>
          </div>
        );
      }
    }
    在每个Counter实例中,都使用了caption和initValue两个prop。通过名为caption的prop,ControlPanel传递给Counter组件实例说明文字。通过名为initValue的prop传递给Counter组件一个初始的计数值。
    3.在子组件中读取prop值
    1)
    constructor(props){
        super(props);//调用父类的构造函数,必须写在第一行
      }
    如果在构造函数中没有调用super(props);那么组件实例被构造之后,类实例的所有成员函数就无法通过this.props访问到父组件传递过来的props值。
    2)在构造函数中通过参数props获得传入的props值。在其他函数中通过this.props访问传入的prop值。
    4.设置props默认值
    Counter.defaultProps={
      initValue:0
    };
    5.propTypes检查
    在es6方法定义的组件类中,可以通过增加类的propTypes属性来定义prop规格。
    问题:从react15.5.0版本开始,protypes属性被拆分出来了,需要单独安装。

    方法:$ npm install prop-types

       import PropTypes from 'prop-types';

    state:

    1.初始化state

    通常在组件类构造函数结尾处初始化state

    constructor(props){
     ...
        this.state = {
          count: props.initValue
        }
      }
    2.读取和更新state
    onClickIncrementButton(){
        this.setState({count:this.state.count+1});
      }
    this.state可以读取到组件的当前state
    this.setState();可以改变组件的state
    prop和state的对比
    prop用于定义外部接口,state用于记录内部状态。
    prop的赋值在外部使用组件时,state的赋值在组件内部。
    组件不应该改变prop的值,而state存在的目的就是让组件来改变的。
    UI=render(data)
    React组件就是render函数的角色。
  • 相关阅读:
    C/S WinFORM 快速开发框架 MyRapid快速开发框架更新日志 ---数据权限控制
    C/S WinFORM 快速开发框架 MyRapid快速开发框架更新日志 ---自动生成操作手册
    C/S WinFORM 快速开发框架 MyRapid快速开发框架更新日志 ---添加模块流程图
    代码分享:给窗体添加水印
    版本需更新提醒
    如何做好软件自动更新
    做项目管理踩过的坑
    团队开发的代码管理(VS)
    Java8尽管很香,你想过升级到Java11吗?会踩那些坑?
    这个 Spring 循环依赖的坑,90% 以上的人都不知道
  • 原文地址:https://www.cnblogs.com/cdx0/p/prop_state.html
Copyright © 2020-2023  润新知