我试图在我的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,但我无法搜索任何有关它的内容。请有人告诉我我做错了什么:/谢谢。
来自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:
开始的。因此,请务必检查控制台中的错误而不是警告。
或者,您可能一定要检查default
。
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');