我有一个通过道具接收store
的组件。因此,使用airbnb预设的tslint告诉我必须声明PropTypes
进行存储,因此我添加了:
Root.propTypes = {
store: PropTypes.object.isRequired,
};
但是
Prop type object is forbidden
。所以我将代码更改为:Root.propTypes = {
store: PropTypes.objectOf(PropTypes.object).isRequired,
};
但是现在浏览器控制台告诉我:
Warning: Failed prop type: Invalid prop `store.dispatch` of type `function` supplied to `Root`, expected `object`.
在我的
index.js
中,我有:const store = configureStore();
ReactDOM.render(
<Root store={store} />,
document.getElementById('root'),
);
我该如何解决?
最佳答案
不知道为什么airbnb linter不允许对象作为PropType,但是您可以尝试从React文档中获取形状语法
// An object taking on a particular shape
optionalObjectWithShape: React.PropTypes.shape({
color: React.PropTypes.string,
fontSize: React.PropTypes.number
}),
您也可以禁用此规则
https://github.com/yannickcr/eslint-plugin-react/blob/master/docs/rules/forbid-prop-types.md#when-not-to-use
“此规则是格式/文档偏好设置,不遵循它不会对代码质量产生负面影响。此规则鼓励使用prop类型来更具体地记录其用法。”
看起来airbnb的代码本身违反了该规则,因此将其禁用。
关于javascript - 警告通过商店作为 Prop ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41880891/