2017-07-20 42 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;空话,成分期待我在所有这些变量的传递明确。删除它解决了我的问题。