我有一个组件通过道具接收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'),
);
我该如何解决?
答案 0 :(得分:2)
不确定为什么airbnb linter不允许将对象作为PropType,但您可以尝试使用React docs中的形状语法
class TestTest extends \PHPUnit\Framework\TestCase
{
function test() {
throw new \Exception(
sprintf(
"Inner: %s Outer: %s",
"Inner message",
(new \Exception("Outer message"))->getMessage()
),
0
);
}
}
您也可以停用此规则
“此规则是格式/文档首选项,不遵循它将不会对代码的质量产生负面影响。此规则鼓励更具体地记录其用法的道具类型。”
看起来airbnb的代码本身有一些违反此规则的行为并且禁用了它。