道具类型不适用于反应应用

问题描述 投票:0回答:2

我试图在我的react-redux应用程序中使用proptypes,但它不起作用,或者我做错了什么。这是代码结束示例:

LoginPage.propTypes = {
     login_form: PropTypes.string
};

function mapStateToProps(state) {
     return { loginPage: state.loginPage }
 }

export default connect(mapStateToProps)(LoginPage);

login_form是布尔值,我故意写PropType.string以查看它是否正常工作但它没有给我任何错误,这可能是因为redux connect,但我无法搜索任何有关它的内容。请有人告诉我我做错了什么:/谢谢。

reactjs redux react-proptypes
2个回答
2
投票

来自docs

如果为prop提供了无效值,则会在JavaScript控制台中显示警告。出于性能原因,仅在开发模式下检查propTypes。

如果您正在运行未处于开发模式的项目,则无法看到警告。

请参阅以下更新: 此外,PropTypes不会抛出错误但会显示警告。务必在控制台中检查警告。您可能已选择仅显示错误。

此外,请务必从'prop-types'导入PropTypes以使用PropTypes:

import PropTypes from 'prop-types'

如果确保上述内容并且您仍未在控制台中看到警告,那么您有可能在字符串中传递布尔值:

<LoginPage login_form="true" />

要么,

<LoginPage login_form={'true'} />

一定要像这样传递布尔值:

<LoginPage login_form={true} />

注意:如果你想传递真值,你可以像这样传递道具:

<LoginPage login_form />

现在,让login_form: PropTypes.string会告诉你警告。


更新:

虽然react doc说它会发出警告,但我刚刚确认它确实在没有应用程序保持的情况下抛出错误。但是消息是从Warning:开始的。因此,请务必检查控制台中的错误而不是警告。

enter image description here

或者,您可能一定要检查default


0
投票

React将自动检查您在组件上设置的propTypes并在控制台中显示[warning]。但是,如果您使用不带React的PropTypes,那么您可以手动调用PropTypes.checkPropTypes,以便在您的情况下。

const myPropTypes = {
  login_form: PropTypes.string,
  // ... define your prop validations
};

const props = {
  login_form: true, // not valid
};

PropTypes.checkPropTypes(myPropTypes, props, 'prop', 'LoginPage');
© www.soinside.com 2019 - 2024. All rights reserved.