React教程

React Props验证

Props是将只读属性传递到React组件的重要机制。通常需要Props在组件中正确使用。如果使用不正确,则组件可能无法正常工作。因此,需要使用Props验证来改进React组件。
Props验证是一种工具,可以帮助开发人员避免将来出现的错误和问题。这是强制正确使用组件的有用方法。它使您的代码更具可读性。 React组件使用特殊属性 PropTypes ,该属性通过验证通过prop传递的值的数据类型来帮助您捕获错误,尽管不必使用propTypes定义组件。但是,如果将propTypes与组件一起使用,则可以帮助您避免意外的错误。

Props验证

App.propTypes 是用于在React组件中验证Props。当某些Props以无效类型传递时,您将在JavaScript控制台上收到警告。指定验证模式后,您将设置App.defaultProps。

语法:

class App extends React.Component {
          render() {}
}
Component.propTypes = { /*Definition */};

ReactJSProps验证器

ReactJSProps验证器包含以下验证器列表。
PropsType 说明
PropTypes.any Props可以是任何数据类型。
PropTypes.array Props应该是一个数组。
PropTypes.bool Props应该是布尔值。
PropTypes.func Props应该是一个功能。
PropTypes.number Props应该是数字。
PropTypes.object Props应该是物体。
PropTypes.string Props应该是字符串。
PropTypes.symbol Props应该是象征。
PropTypes.instanceOf Props应该是特定JavaScript类的实例。
PropTypes.isRequired 必须提供Props。
PropTypes.element Props必须是元素。
PropTypes.node Props可以渲染任何东西: 数字,字符串,元素或包含这些类型的数组(或片段)。
PropTypes.oneOf() Props应该是几种特定值中的一种。
PropTypes.oneOfType([PropTypes.string,PropTypes.number]) Props应该是可以是多种类型之一的物体。

示例

在这里,我们正在创建一个App组件,其中包含我们需要的所有Props。在此示例中, App.propTypes 用于Props验证。为了进行Props验证,您必须添加以下行: 从 App.js文件中的"Props类型" 导入Props类型。
App.js
import React, { Component } from 'react';
import PropTypes from 'prop-types';
class App extends React.Component {
   render() {
      return (
          <div>
              <h1>ReactJS Props validation example</h1>
              <table>
                  <tr>
                      <th>Type</th>
                      <th>Value</th>
                      <th>Valid</th>
                  </tr>
              <tr>
                      <td>Array</td>
                      <td>{this.props.propArray}</td>
                      <td>{this.props.propArray ? "true" : "False"}</td>
                  </tr>
                  <tr>
                      <td>Boolean</td>
                      <td>{this.props.propBool ? "true" : "False"}</td>
                      <td>{this.props.propBool ? "true" : "False"}</td>
                  </tr>
                  <tr>
                      <td>Function</td>
                      <td>{this.props.propFunc(5)}</td>
                      <td>{this.props.propFunc(5) ? "true" : "False"}</td>
                  </tr>
                  <tr>
                      <td>String</td>
                      <td>{this.props.propString}</td>
                      <td>{this.props.propString ? "true" : "False"}</td>
                  </tr>
                  <tr>
                      <td>Number</td>
                      <td>{this.props.propNumber}</td>
                      <td>{this.props.propNumber ? "true" : "False"}</td>
                  </tr>
             </table>
        </div>
        );
   }
}
App.propTypes = {
    propArray: PropTypes.array.isRequired,
    propBool: PropTypes.bool.isRequired,
    propFunc: PropTypes.func,
    propNumber: PropTypes.number,
    propString: PropTypes.string, 
}
App.defaultProps = {
    propArray: [1,2,3,4,5],
    propBool: true,
    propFunc: function(x){return x+5},
    propNumber: 1,
    propString: "lidihuo",
}
export default App;
Main.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App.js';
ReactDOM.render(<App/>, document.getElementById('app'));
输出:
ReactProps验证

ReactJS自定义验证器

ReactJS允许创建自定义验证功能来执行自定义验证。以下参数用于创建自定义验证功能。
Props: 它应该是组件中的第一个参数。 propName: : 将要验证的propName。 componentName: 是要再次验证的componentName。

示例

var Component = React.createClass({
App.propTypes = {
   customProp: function(props, propName, componentName) {
        if (!item.isValid(props[propName])) {
          return new Error('Validation failed!');
        }
      }
   }
})

昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4