ES6 数据校验

简介: ES6 class 数据校验import React, { PropTypes } from 'react';const propTypes = { // 验证不同类型的 JavaScript 变量 optionalArray: PropTypes.

ES6 class 数据校验

import React, { PropTypes } from 'react';

const propTypes = {
  // 验证不同类型的 JavaScript 变量
  optionalArray: PropTypes.array,
  optionalBool: PropTypes.bool,
  optionalFunc: PropTypes.func,
  optionalNumber: PropTypes.number,
  optionalObject: PropTypes.object,
  optionalString: PropTypes.string,

  // 所有可以被渲染的对象:数字,字符串,DOM 元素或包含这些类型的数组。
  optionalNode: React.PropTypes.node,

  // 可以是一个 ReactElement 类型
  optionalElement: PropTypes.element,

  // 可以是某个组件的实例
  optionalMessage: PropTypes.instanceOf(Message),

  // 可以是一组值中其中的一个
  optionalEmun: PropTypes.oneOf(['News', 'Photos']),

  // 可以是一组类型中的一个
  optionalUnion: PropTypes.oneOfType([
    PropTypes.array,
    PropTypes.string,
    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!');
    }
  }

  // 可以在最后加一个 isRequired,表明这个属性是必须的,否则会返回一个错误
  requiredFunc: PropTypes.func.isRequired
};

class Profile extends React.Component {
  render() {
    return (
      <div className="profile-component">
        {/* this.pros 是传入的属性 */}
        <h1>my name is { this.props.name }</h1>
        <h2>my age is { this.props.age }</h2>
      </div>
    );
  }
}

Profile.propTypes = propTypes;
export default Profile;

将 propTypes 写在类中

import React, { PropTypes } from 'react';

export default class Profile extends React.Component {
  static get propTypes() {
    return {
      name: PropTypes.string.isRequired,
      age: PropTypes.number.isRequired
    };
  }

  constructor(props) {
    super(props);
    this.state = { count: 0 };
    this.likeMe = this.likeMe.bind(this);
  }

  componentDidMount() {
    // 组件加载完成1秒之后,使 count 自动加1
    setTimeout(() => {
      this.likeMe();
    }, 1000);
  }

  likeMe() {
    let count = this.state.count;
    count += 1;
    console.log(count);
    this.setState({ count });
  }

  render() {
    return (
      <div className="profile-component">
        {/* this.pros 是传入的属性 */}
        <h1>my name is { this.props.name }</h1>
        <h2>my age is { this.props.age }</h2>
        <button onClick={this.likeMe}>Like Me</button>
        <h2>Like Me Count: { this.state.count }</h2>
      </div>
    );
  }
}
目录
相关文章
|
前端开发 API
ES 高级实战(四)查询 ES 数据
ES 高级实战(四)查询 ES 数据
1422 0
ES 高级实战(四)查询 ES 数据
|
6月前
|
小程序
不要手动做数据校验
不要手动做数据校验
43 0
|
10月前
|
存储
ES批量写入数据
ES批量写入数据
330 1
|
10月前
|
JavaScript 数据安全/隐私保护
Vue rules校验规则详解
Vue rules校验规则详解
|
JSON 移动开发 NoSQL
【ES系列九】——批量同步数据至ES
通过es官网提供的bulk方法进行实现
ES5新增方法(一)
前言 今天和大家分享一下ES5中一些新增的方法。 一、数组方法 迭代(遍历)方法:forEach(),map(),filter(),some(),every() array.forEach(function(value,index,arr)) value:数组当前项的值 index:数组当前项的索引 arr:数组对象本身
|
JSON 安全 数据安全/隐私保护
elasticdump迁移ES数据详解
elasticdump迁移ES数据详解
|
前端开发 Java API
数据校验(前端数据校验、JSR303校验)
数据校验(前端数据校验、JSR303校验)
281 0
|
SQL Oracle 关系型数据库
gt-checksum 1.2.1发布,新增表结构校验及修复等超实用特性
gt-checksum 1.2.1发布,新增表结构校验及修复等超实用特性
120 0
|
存储 SQL Oracle
好用的数据校验&修复工具gt-checksum开源啦
好用的数据校验&修复工具gt-checksum开源啦
507 0