2015-10-18 66 views
0

我有一個簡單的redux樣板項目,當我導入頂級(智能)組件時,與我內聯類聲明相比,我遇到了不同的行爲。在聲明內聯導入時使用相同的JSX組件時出錯

創建類導致沒有錯誤但是當我解壓類到一個單獨的文件,我收到以下錯誤:

Warning: Failed propType: Required prop `routerState` was not specified in `AppContainer`. Check the render method of `RoutingContext`. 

我試圖內聯的整個文件和錯誤消失

// == Import ================================================================== 
import AppContainer from '../containers/App.jsx'; 
// === Declare Inline ========================================================= 
import { connect } from 'react-redux'; 
import { Component, PropTypes } from 'react'; 


@connect(state => ({ routerState: state.router })) 
class AppContainer extends Component { 
    static propTypes = { 
    children: PropTypes.node.isRequired, 
    routerState: PropTypes.object.isRequired, 
    } 

    render() { 
    return (
     <div className="container-fluid"> 
     <div className="row"> 
      <div className="col-xs-12"> 
      <h1>App</h1> 
      {this.props.children} 
      </div> 
     </div> 
     </div> 
    ); 
    } 
} 
// ============================================================================ 

這是project repo(它的超級條紋背)。

"dependencies": { 
    "history": "^1.12.5", 
    "react": "^0.14.0", 
    "react-dom": "^0.14.0", 
    "react-redux": "^4.0.0", 
    "react-router": "^1.0.0-rc3", 
    "redux": "^3.0.2", 
    "redux-router": "^1.0.0-beta3" 
    }, 
+0

很奇怪,我會拉下回你的回購,看看 – JonE

回答

0

所以從我個人理解是因爲你曾表示,propTypes兒童和routerState是可以預期的,但使用組件時,你有沒有把他們當作propTypes,因爲要傳遞的應用程序組件作爲一個propType到<Route />組件中。

<Route path="/" component={AppContainer}> 
    <IndexRoute component={Home} /> 
</Route> 

我不知道,如果你的應用程序組件應該有這些propTypes,因爲你不能在通過他們,但你應該能夠通過改變propType到PropTypes.node檢索this.props.children

您可以通過執行過的道具到你的路由器的組件:

<Route path="myComponent/:name" component={MyComponent} /> 

其中「名」就是你要帕拉姆,並做到:在「MyComponent的」 this.props.params.name

+0

謝謝你看看。我可以訪問'this.props.children',但是我無法訪問'state'中的任何內容。 'App'組件上的'@ connect'裝飾器應該允許我在'state'中傳入任何屬性。如果我在'routes.jsx'中定義了這個類,這將起作用,但是如果我將相同的代碼導入'routes.jsx'中的同一個地方,則不適用。 – rockingskier

+0

您是否嘗試過在其回購中使用基本示例?和比較? – JonE

+0

將他們的例子(https://github.com/rackt/redux-router/blob/master/examples/basic/index.js)複製到我的'index.jsx'工作中,如果我移動他們的'應用程序「到一個單獨的文件。我只能假設我在某個地方做了些愚蠢的事情。我實際上不能直接運行他們的例子,我已經在所有的三個文件夾中分叉和'npm,它抱怨說它不能引用'redux-router'(本身)。 – rockingskier

相關問題