2017-01-26 56 views
1

我有一個組件通過道具收到store。所以tslint與製作的Airbnb預設告訴我,我必須聲明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

'PropTypes.object.isRequired'是有效的。 'Prop type object is forbidden'的錯誤信息是從哪裏觸發的? – ganesshkumar

+0

從'airbnb'棉絨 – FacundoGFlores

回答

2

不知道爲什麼製作的Airbnb棉短絨不允許對象作爲PropType,但你可以嘗試從陣營文檔形狀語法

// 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的代碼本身有一些違反這條規則,他們禁用它。