2017-07-20 63 views
0

我正在嘗試添加一個智能組件到我的應用程序中,並且打字稿不斷地對我添加足夠的道具不停地大叫。以下是我想要添加的代碼:我從具有react redux的asp.net核心spa應用程序開始,並一直試圖從那裏開始構建。React組件丟失道具元素

<Layout> 
    <Route exact path='/' component={ Home } /> 
    <Route path='/counter' component={ Counter } /> 
    <Route path='/fetchdata/:startDateIndex?' component={ FetchData } /> 
</Layout>; 

type LayoutProps = LayoutState.LayoutState 
    & typeof LayoutState.actionCreators; 


class Layout extends React.Component<LayoutProps, {}> { 
    componentWillMount() { 
     this.props.requestNavigationLinks(); 
    } 

    public render() { 
     return <Grid fluid> 
      <Row> 
       <Col sm={3}> 
        <NavMenu links={this.props.links}/> 
       </Col> 
       <Col sm={9}> 
        {this.props.children} 
       </Col> 
      </Row> 
     </Grid>; 
    } 
} 

export default connect(
    (state: ApplicationState) => state.layout, 
    LayoutState.actionCreators 
)(Layout) as typeof Layout; 

export interface LayoutState { 
    isLoading: boolean; 
    links: string[]; 
} 

我遇到的問題是打字稿抱怨標籤缺少屬性被分配到它的道具。連接語句不會自動處理這個?

我相信這是我很想念的東西,你的幫助表示讚賞。

回答

0

我不認爲requestNavigationLinks是在LayoutState中定義的屬性。您可以嘗試將其添加到界面。

例如:

export interface LayoutState { 
    isLoading: boolean; 
    links: string[]; 
    requestNavigationLinks: func; 
} 
+0

對不起,我沒有包括LayoutProps的定義,它幾乎就像你剛剛使用的函數類型。它實際上是抱怨isLoading丟失了,如果我添加它,然後它抱怨鏈接並最終requestNavigationLinks。 –

+0

不用擔心。我找到了一篇有用的文章,可以幫助你:http://www.sohamkamani.com/blog/2017/03/31/react-redux-connect-explained/。閱讀「連接」部分。它可能會發現你的問題缺失的一塊。 – cbolgiano

0

它與出口線做。我把它從ASPNET-溫泉例如:

export default connect(
    (state: ApplicationState) => state.layout, 
    LayoutState.actionCreators 
)(Layout) as typeof Layout; 

因爲as typeof Layout;空話,成分期待我在所有這些變量的傳遞明確。刪除它解決了我的問題。