Reactjs 使用isRequired时,React PropType未给出错误
我正在尝试学习React,但是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
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;