初始化state方法和定義組件props驗證等

1. 初始化state方法

class Video extends React.Component {
    //初始化state
    state = {
        name: "Mike",
        age: 12,
        obj: {a: "a", b: 1},
        array: ["abc", "bcd"],
    }
    _changeData = ()=>{
    //更改state
        this.setState({
            name: "Nike",
            age: 13
        })
    }
}

2. 定義組件時設置類型驗證

class Video extends React.Component {
    //初始化props默認值
    static defaultProps = {
        autoPlay: false,
        maxLoops: 10,
    };  // 注意這裏有分號
    //props類型驗證
    static propTypes = {
        autoPlay: React.PropTypes.bool,//該值不是必須的,可空
        maxLoops: React.PropTypes.number.isRequired,//該值是必須的,不可空
        posterFrameSrc: React.PropTypes.string.isRequired,
        videoSrc: React.PropTypes.string.isRequired,
    };  // 注意這裏有分號

}

3. props 驗證所以類型表

React.createClass({
  propTypes: {
    // 可以聲明 prop 爲指定的 JS 基本類型。默認
    // 情況下,這些 prop 都是可傳可不傳的。
    optionalArray: React.PropTypes.array,
    optionalBool: React.PropTypes.bool,
    optionalFunc: React.PropTypes.func,
    optionalNumber: React.PropTypes.number,
    optionalObject: React.PropTypes.object,
    optionalString: React.PropTypes.string,

    // 所有可以被渲染的對象:數字,
    // 字符串,DOM 元素或包含這些類型的數組。
    optionalNode: React.PropTypes.node,

    // React 元素
    optionalElement: React.PropTypes.element,

    // 用 JS 的 instanceof 操作符聲明 prop 爲類的實例。
    optionalMessage: React.PropTypes.instanceOf(Message),

    // 用 enum 來限制 prop 只接受指定的值。
    optionalEnum: React.PropTypes.oneOf(['News', 'Photos']),

    // 指定的多個對象類型中的一個
    optionalUnion: React.PropTypes.oneOfType([
      React.PropTypes.string,
      React.PropTypes.number,
      React.PropTypes.instanceOf(Message)
    ]),

    // 指定類型組成的數組
    optionalArrayOf: React.PropTypes.arrayOf(React.PropTypes.number),

    // 指定類型的屬性構成的對象
    optionalObjectOf: React.PropTypes.objectOf(React.PropTypes.number),

    // 特定形狀參數的對象
    optionalObjectWithShape: React.PropTypes.shape({
      color: React.PropTypes.string,
      fontSize: React.PropTypes.number
    }),

    // 以後任意類型加上 `isRequired` 來使 prop 不可空。
    requiredFunc: React.PropTypes.func.isRequired,

    // 不可空的任意類型
    requiredAny: React.PropTypes.any.isRequired,
    // 自定義驗證器。如果驗證失敗需要返回一個 Error 對象。不要直接
    // 使用 `console.warn` 或拋異常,因爲這樣 `oneOfType` 會失效。
    customProp: function(props, propName, componentName) {
      if (!/matchme/.test(props[propName])) {
        return new Error('Validation failed!');
      }
    }
  },
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章