Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript propTypes是react中要求的约束错误引导行为_Javascript_Reactjs - Fatal编程技术网

Javascript propTypes是react中要求的约束错误引导行为

Javascript propTypes是react中要求的约束错误引导行为,javascript,reactjs,Javascript,Reactjs,我对反应(或者说网络技术)非常陌生。我开始构建一个使用不同组件的应用程序。在阅读文档时,我认为将isRequired放在propTypes中会限制用户在使用组件时提供所有isRequired属性 var PanelPreview = React.createClass({ getInitialState: function(){ return { captionIndex: 0 }; }, propTypes: { beforeSrc: Rea

我对反应(或者说网络技术)非常陌生。我开始构建一个使用不同组件的应用程序。在阅读文档时,我认为将
isRequired
放在propTypes中会限制用户在使用组件时提供所有
isRequired
属性

var PanelPreview = React.createClass({
    getInitialState: function(){
       return { captionIndex: 0 };
    },
    propTypes: {
       beforeSrc: React.PropTypes.string.isRequired,
       afterSrc: React.PropTypes.string.isRequired,
       captionTable: React.PropTypes.array
    },
});
module.exports = PanelPreview;
但是,在本例中,即使我没有传递
isRequired
属性,我也能够加载组件

var PanelPreview = React.createClass({
    getInitialState: function(){
       return { captionIndex: 0 };
    },
    propTypes: {
       beforeSrc: React.PropTypes.string.isRequired,
       afterSrc: React.PropTypes.string.isRequired,
       captionTable: React.PropTypes.array
    },
});
module.exports = PanelPreview;
使用此组件的应用程序:

   React.render(
      < PanelPreview />,
      document.getElementById('main')
   );
React.render(
,
document.getElementById('main')
);

我想约束组件的用户提供这两个值,否则会引发某种错误

道具验证失败目前不被视为严重错误。但是,控制台中将记录警告:

Warning: Required prop `beforeSrc` was not specified in `PanelPreview`.
这只发生在react的非生产构建中。在生产中,未记录任何内容。看这把小提琴的例子

有人讨论过如何对道具验证失败快速做出反应(见下面的问题),这似乎最终会发生,但我认为这还没有出现在任何路线图上


@mAc为了补充这一点,FB最近发布了类型检查流程JS。它处理道具类型正如您所期望的(但不幸的是,它看起来不像是任何设置的简单添加)