鍍金池/ 教程/ HTML/ ReactJS props驗證
ReactJS動畫
ReactJS組件狀態(tài)(State)
ReactJS簡介
ReactJS開發(fā)環(huán)境設(shè)置
ReactJS Refs
ReactJS組件API
ReactJS高階組件
ReactJS組件
ReactJS props簡介
ReactJS教程
ReactJS組件生命周期
ReactJS鍵(Key)
ReactJS事件
ReactJS最佳實踐
ReactJS props驗證
ReactJS表單
ReactJS JSX
ReactJS路由器
ReactJS通量概念

ReactJS props驗證

屬性驗證是強(qiáng)制組件正確使用的有效方法。 這將有助于開發(fā)過程中避免未來的錯誤和問題,一旦應(yīng)用程序變得更大。 這也使得代碼更具可讀性,因為我們可以看到每個組件應(yīng)該如何使用。

驗證props

在這個例子中,我們使用需要的所有props來創(chuàng)建App組件。 App.propTypes用于props驗證。如果某些props沒有使用指定的正確類型,那么將會得到一個控制臺警告。在指定驗證模式后,我們將設(shè)置App.defaultProps。

文件:App.jsx -

import PropTypes from 'prop-types';
import React from 'react';
import ReactDOM from 'react-dom';

class App extends React.Component {
   render() {
      return ( 
         <div>
            <h1> Hello, {this.props.name} </h1>
            <h3>Array: {this.props.propArray}</h3>            
            <h3>Bool: {this.props.propBool ? "True..." : "False..."}</h3>
            <h3>Func: {this.props.propFunc(3)}</h3>
            <h3>Number: {this.props.propNumber}</h3>
            <h3>String: {this.props.propString}</h3>
         </div>
      );
   }
}
App.propTypes = {
   name: PropTypes.string,
   propArray: PropTypes.array.isRequired,
   propBool: PropTypes.bool.isRequired,
   propFunc: PropTypes.func,
   propNumber: PropTypes.number,
   propString: PropTypes.string,
};
App.defaultProps = {
   name: 'Yiibai.com',
   propArray: [1, 2, 3, 4, 5],
   propBool: true,
   propFunc: function(e) {
      return e
   },
   propNumber: 1,
   propString: "String value..."
}
export default App;

文件:main.js -

import React from 'react';
import PropTypes from 'prop-types';
import ReactDOM from 'react-dom';
import App from './App.jsx';

ReactDOM.render(<App/>, document.getElementById('app'));

文件: webpack.config.js -

var config = {
   entry: './main.js',

   output: {
      path:'/',
      filename: 'index.js',
   },
   devServer: {
      inline: true,
      port: 8080
   },
   externals: {
      'react': 'React'
   },
   module: {
      loaders: [
         {
            test: /\.jsx?$/,
            exclude: /node_modules/,
            loader: 'babel-loader',

            query: {
               presets: ['es2015', 'react']
            }
         }
      ]
   }
}
module.exports = config;

由于所有的props都是有效的,會得到如下的結(jié)果。

React Props驗證示例
可以注意到,在驗證propArraypropBool時,我們使用了isRequired。如果其中一個不存在,它會給出一個錯誤。 如果從App.defaultProps對象中刪除propArray:[1,2,3,4,5],控制臺將會記錄一個警告。


上一篇:ReactJS通量概念下一篇:ReactJS動畫