【06】react 之 PropsType

React组件创建的时候,需要传入属性,我们可以使用使用PropTypes进行类型检查,您可以使用React.PropTypes在组件的道具上运行。

React.PropTypes.array 

React.PropTypes.bool

React.PropTypes.func

React.PropTypes.number

React.PropTypes.object

React.PropTypes.string

React.PropTypes.symbol

React.PropTypes.node

React.PropTypes.element

React.PropTypes.instanceOf()

React.PropTypes.oneOf()

React.PropTypes.oneOfType()

React.PropTypes.arrayOf()

React.PropTypes.objectOf()

React.PropTypes.shape()

React.PropTypes.any

默认情况下,验证器将props视为可选属性。您可以使用isRequired确保在未提供道具时显示警告。

 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!‘);

      }

    }

  },

  /* ... */

});

或者

    MyComponent.propTypes = {

        name:React.PropTypes.string

};

es6

class InputControlES6 extends React.Component {
      constructor(props) {
          super(props);
          // 设置 initial state
          this.state = {
              text: props.initialValue || ‘placeholder‘
          };
          // ES6 类中函数必须手动绑定
          this.handleChange = this.handleChange.bind(this);
      }
      handleChange(event) {
          this.setState({
              text: event.target.value
          });
            console.log(this.state.text);
      }
      render() {
          return (
              <div>
                  Type something:
                  <input onChange={this.handleChange}
                value={this.state.text} />
              </div>
          );
      }
}
InputControlES6.propTypes = {
    initialValue: React.PropTypes.string
};
InputControlES6.defaultProps = {
    initialValue: ‘‘
};
ReactDOM.render(<InputControlES6/>,document.getElementById(‘example‘))
时间: 2024-11-07 06:43:02

【06】react 之 PropsType的相关文章

06.React组件进阶(二)Context

Context 作用:跨组件传递数据(比如主题,语言等) 使用步骤: 1.使用Reat.creatContext()创建Provider(提供数据和 Consumer(消费数据) 两个组件 const {Provider,Consumer} = React.createContext() 2.使用Provider组件作为父节点 <Provider> <div className="App"> <Child1 /> </div> </

Web前端+移动端全套视频教程

Web前端+移动端全套视频教程|12.小程序|01.小程序.rar|11.Vue|05.Vue实战练习.rar|04.Vue UI框架Element-UI.rar|03.Vue路由.rar|02.Vue网络请求.rar|01.Vue基础.rar|10.React|06.React网络请求Fetch.rar|05.React UI框架Antd.rar|04.React路由4.x.rar|03.React路由3.x.rar|02.React环境搭建.rar|01.React基础.rar|09.前端构

react学习笔记-06

1.在调用setState之后发生了什么? 在代码调用setState之后,React会将传入的参数对象与组件当前状态合并,然后触发调和过程.在调和过程中,react会以相对搞高效的方式根据新的状态构建DOM树,在构建DOM的时候,react会比较新的DOM树和老的DON树的节点差异,然后根据差异对界面进行最小化重渲染.在Diff 算法中,React能够精确的知道哪些位置发生了改变以及该如何改变,这就保证了按需更新,而不是全部更新. 2.React中element与compoent的区别 Rea

2019.06.22 React如何自定义antd-mobile样式

太长不看系列:大部分文章的全局颜色变量名是"primary-color", 但是antd-mobile的的全局色变量名已经改成了"brand-primary".换个变量名试试. 最近正在看React的实例教程,涉及到自定义antd-mobile样式. ant design的官方文档给出很多方法,以下的方法是假设你使用create-react-app脚手架 https://ant.design/docs/react/use-with-create-react-app-

React/React Native 的ES5 ES6写法对照表

转载: http://bbs.reactnative.cn/topic/15/react-react-native-%E7%9A%84es5-es6%E5%86%99%E6%B3%95%E5%AF%B9%E7%85%A7%E8%A1%A8 英文版: https://babeljs.io/blog/2015/06/07/react-on-es6-plus 很多React/React Native的初学者都被ES6的问题迷惑:各路大神都建议我们直接学习ES6的语法(class Foo extends

React Native通信机制详解

本文转载至 http://blog.cnbang.net/tech/2698/?from=groupmessage&isappinstalled=1 React Native是facebook刚开源的框架,可以用javascript直接开发原生APP,先不说这个框架后续是否能得到大众认可,单从源码来说,这个框架源码里有非常多的设计思想和实现方式值得学习,本篇先来看看它最基础的JavaScript-ObjectC通信机制(以下简称JS/OC). 概览 React Native用iOS自带的Java

使用React重构百度新闻webapp前端

http://wangfupeng.coding.me/share/2016/08/06/restruct-bdnews-webapp-by-react.html 声明 本文仅仅是对前几个月使用React重构百度新闻webapp项目的一个总结和思考,不会泄露任何项目代码(文章中的代码都是fis3或其他开源产品的配置代码,fis3是百度开源产品),因此“伸手党”可绕行. 现在2016年8月,web前端技术这几年变化太快,因此一些信息的时效性非常重要,还是把时间写上比较好. 项目介绍 百度新闻的 w

听晴明老师从头讲React Native

01基本原理与开发环境搭建[录播]React Native架构和原理的简单介绍(16分钟)[录播]macOS iOS环境搭建(19分钟) [录播]macOS Android环境搭建(17分钟) [录播]Windows Android环境搭建(10分钟) [录播]Android设备的使用和注意事项(8分钟) 02javaScript.Node.ES6基础[录播]JavaScript基础(12分钟)[录播]ES6基础(12分钟)[录播]Node基础(15分钟)[资料]JavaScript.Node.

&lt;React Native移动开发实战&gt;-1-React Native的JSX解决方案

JSX并不是一门新的开发语言,而是Facebook提出的语法方案:一种可以在JavaScript代码中直接书写HTML标签的语法糖,所以,JSX本质上还是JavaScript语言. 小知识:语法糖(Syntactic sugar)是由英国计算科学家彼得·兰丁(https://zh.wikipedia.org/ wiki/%E5%BD%BC%E5%BE%97%C2%B7%E5%85%B0%E4%B8%81)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序