react的state和props

作者: 爱穿裤衩的小粗腿城 | 来源:发表于2017-01-03 15:07 被阅读492次

    state状态和props属性是react非常重要的两个方面,状态控制组件内部的变化,属性获取外部传递给内部的数据,当state和props改变时,会重新调用render方法,渲染dom对象。

    state状态

    常用方法:

    1. getInitialState:获取组件的初始化状态,在组件加载的时候调用(render前)
    2. this.state:获取组件的状态的值,但不能通过this.state.xxx = xxx改变状态的值
    3. this.setState:用来改变组件状态的值 ,用法如下
    var Radio= React.createClass({ 
      // 定义组件的初始状态,初始为关 
      getInitialState: function() {
         return { checked: false } 
      }, // 通过 this.state 获取当前状态 
      changeCheck: function() { 
        this.setState({ checked: !this.state.checked}); }
     }),
      render: function() {
         return <label className="radio"> 
            <input type="radio" checked={this.state.checked} onChange={this.changeCheck}/> 选中
          </label> 
    },
     // 通过 setState 修改组件状态 // setState 过后会 React 会调用 render 方法重渲染 
    

    props属性

    常用方法:
    1.this.props.xxx 用来获取写在组件中的xxx属性的值 注意jsx中class属性为 className,for属性为 htmlFor;
    2.getDefaultProps:获取默认的属性对象,在render前调用一次,用于将组件中绑定的属性添加到this.props ;可以设置默认值,当组件属性没传值时,调用默认值;
    3.this.props.children :获取子节点的属性,其中children只能为一个元素,不能为组件

    var GetChildItem = React.createClass({ 
      render: function() { 
        var props = this.props; 
        return <div className="todo-item"> 
          <span class="todo-item__name">{props.children}</span> 
        </div> 
        }
     });
     ReactDOM.render( 
        <GetChildItem >子节点内容</GetChildItem >, document.getElementById('example'));
    
    1. propsType用来校验属性传递的正确性(非空,类型验证等),通常写在最前面;
        var MyComponent = React.createClass({
            propTypes: {
                optionalRequired:React.PropTypes.isRequired,//不能为空
                optionalArray: React.PropTypes.array,
                optionalBool: React.PropTypes.bool,
                optionalFunc: React.PropTypes.func,
                optionalNumber: React.PropTypes.number,
                optionalObject: React.PropTypes.object,
                optionalString: React.PropTypes.string,
                // 任何可以被渲染的包括,数字,字符串,组件,或者数组
                optionalNode: React.PropTypes.node,
                // React 元素
                optionalElement: React.PropTypes.element,
                customProp: function(props, propName, componentName) {}//自定义校验
            }
        });
    

    相关文章

      网友评论

        本文标题:react的state和props

        本文链接:https://www.haomeiwen.com/subject/bjngvttx.html