我无法理解为什么我的propTypes检查没有在这个类上运行

时间:2018-06-09 18:02:50

标签: reactjs react-proptypes

我正在尝试使用React的ES6类语法,我遇到了一个我无法理解的问题。

使用下面的类,由于某种原因,propTypes检查没有运行,但我无法弄清楚原因。

import { Component } from "react"
import PropTypes from "prop-types"


class Summary extends Component {

    constructor() {
        super()
        this.displayName = "Summary"
    }


    render() {

        const {ingredients, steps, title} = this.props
        return(
            <div className="Summary">
                <h1>{title}</h1>
                <p>
                    <span>{ingredients} Ingredients</span> | <span> {steps} Steps</span>
                </p>
            </div>
        )
   }

}

Summary.defaultProps =   {
                ingredients: 0,
                steps: 0,
                title: "[untitled recipie]"

        } 

Summary.propTypes = {
            ingredients: PropTypes.number.isRequired,
            steps: PropTypes.number.isRequired,
            title: function (props, propName) {
                let title = props[propName];
                let valid = null;


                if (typeof title !== "string") return new Error("A title must be a string");
                if (title.length > 20) return new Error("Title's length is over 20 characters");

                return valid;

            }
}

export default Summary

如果我尝试用以下内容创建元素:

<Summary title={5} steps="some string" />

我没有错误。它只是将标题呈现为“5”,将步骤呈现为“某些字符串”。它应该抛出,因为步骤的propType需要一个数字,而title的propType需要一个字符串。

我尝试过的事情

  • 我尝试将propTypes设置为类声明中的静态属性。这也不起作用。
  • 我尝试将propTypes设置为实例的属性而不是类。这绝对不起作用
  • 我尝试过设置propTypes但没有设置defaultProps。仍然没有骰子。
  • 我尝试使用谷歌搜索“ES6类语法propTypes”的变体,但没有找到任何可以告诉我我做错了什么。

0 个答案:

没有答案