Reactjs 使用isRequired时,React PropType未给出错误

Reactjs 使用isRequired时,React PropType未给出错误,reactjs,react-proptypes,Reactjs,React Proptypes,我正在尝试学习React,但是PropTypes即使与isRequired一起使用,也不会抛出任何错误。我做错什么了吗 代码是这样的 <div id="root"></div> <script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script> <script crossorigin src="https://unpkg.com/rea

我正在尝试学习React,但是
PropTypes
即使与
isRequired
一起使用,也不会抛出任何错误。我做错什么了吗

代码是这样的

<div id="root"></div>
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<script crossorigin src="https://unpkg.com/prop-types@15.6.2/prop-types.min.js"></script>
<script crossorigin src="https://unpkg.com/babel-standalone@6.26.0/babel.min.js"></script>
<script type="text/babel">

    function SayHello(props) {
        return (
            <div>
                Hello {props.firstName} {props.lastName}!
            </div>
        )
    }

    SayHello.propTypes = {
        firstName: PropTypes.string.isRequired,
        lastName: PropTypes.string.isRequired,
    }

    ReactDOM.render(<SayHello />, document.getElementById('root'))

</script>

我的浏览器没有收到任何错误或警告。

以下是有效的解决方案

import*作为“道具类型”中的道具类型;
const SayHello=props=>{
返回(
你好{props.firstName}{props.lastName}!
);
};
SayHello.propTypes={
名字:PropTypes.string.isRequired,
姓氏:PropTypes.string.isRequired
};
导出默认的SayHello;

proptypes的缩小版可能存在一些问题

换衣服

https://unpkg.com/prop-types@15.6.2/道具类型.min.js

https://unpkg.com/prop-types@15.6.2/prop types.js

您将收到失败的proptype警告。

EDIT @JS引擎正确,将PropType从生产版本更改为开发版本


函数SayHello(道具){
返回(
你好{props.firstName}{props.lastName}!
)
}
SayHello.propTypes={
名字:PropTypes.string.isRequired,
姓氏:PropTypes.string.isRequired,
}
ReactDOM.render(,document.getElementById('root'))

您好,您检查过浏览器控制台了吗?proptypes在那里抛出错误,它在实际的浏览器视图端口上没有显示任何内容。@bullettrain,我只检查浏览器控制台。在浏览器babel transformer中,甚至会弹出一条关于
的babel警告
,但除此之外什么都不会弹出。
从“道具类型”导入道具类型很好。不需要
*
是的,它会抛出一个错误。但是,我的代码首先出了什么问题?此外,我的代码仍然没有引发错误。我更新了代码段:。我不知道为什么强制导入,但我的IDE说:默认导出没有在导入模块中声明,它仍然没有抛出错误。我更改了
unpkg
版本,它可以正常工作。谢谢。但是,缩小版不应该有相同的代码,但没有注释和换行符吗?我知道
jQuery
及其版本,但在这里?这是我的荣幸。是的,缩小版必须通过删除不必要的代码来提供相同的功能。在这种情况下,可能会出现一些不同的问题。
<SayHello firstName="John" lastName="Doe" />
import * as PropTypes from "prop-types";

const SayHello = props => {
  return (
    <div>
      Hello {props.firstName} {props.lastName}!
    </div>
  );
};

SayHello.propTypes = {
  firstName: PropTypes.string.isRequired,
  lastName: PropTypes.string.isRequired
};

export default SayHello;