zoukankan      html  css  js  c++  java
  • [React] Validate Custom React Component Props with PropTypes

    In this lesson we'll learn about how you can use the prop-types module to validate a custom React component's props.

    You can write you own PropTypes vlidators like such:

    const PropTypes = {
      string(props, propName, componentName) {
        if(typeof props[propName] !== 'string') {
          return new Error(
            `You should pass a string for ${propName} but you pass ${typeof props[propName]}`
            )
        }
      }
    }

    Because this is commonly used, so we can use React libs for that:

    https://www.npmjs.com/package/prop-types

    <body>
    <script src="https://unpkg.com/react@16.0.0/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16.0.0/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/prop-types@15.6.0/prop-types.js"></script>
    <script src="https://unpkg.com/babel-standalone@6.26.0/babel.js"></script>
    <div id="root"></div>
    
    <script type="text/babel">
    class SayHello extends React.Component {
      static propTypes = {
        firstName: PropTypes.string.isRequired,
        lastName: PropTypes.string.isRequired,
      }
      
      render() {
        return (
          <div>
            Hello {this.props.firstName} {this.props.lastName}!
          </div>
        )
      }
    }
    
    ReactDOM.render(
      <SayHello firstName={true} />,
      document.getElementById('root')
    )
    </script>
    </body>

    For producation, PropTypes is not necessary, and will slow down the proferemence, so we can remove it by using the babel plugin:

    https://www.npmjs.com/package/babel-plugin-transform-react-remove-prop-types

  • 相关阅读:
    POJ 3253 Fence Repair
    POJ 2431 Expedition
    NYOJ 269 VF
    NYOJ 456 邮票分你一半
    划分数问题 DP
    HDU 1253 胜利大逃亡
    NYOJ 294 Bot Trust
    NYOJ 36 最长公共子序列
    HDU 1555 How many days?
    01背包 (大数据)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/8000858.html
Copyright © 2011-2022 走看看