我正在尝试为我的应用程序添加一个智能组件,并且打字稿不断地因为我没有添加足够的道具而大喊大叫。下面是我要添加的代码:我从带有react redux的asp.net核心spa应用程序开始,并且一直在尝试从那里构建。
<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[];
}
我遇到的问题是打字稿是抱怨标签缺少属性被分配给它的道具。 connect语句不会自动处理吗?
我确信这很容易,我很遗憾,感谢您的帮助。
答案 0 :(得分:1)
它与出口线有关。我从aspnet-spa示例中获取了它:
export default connect(
(state: ApplicationState) => state.layout,
LayoutState.actionCreators
)(Layout) as typeof Layout;
由于as typeof Layout;
措词,该组件期望我明确传递所有这些变量。删除它解决了我的问题。
答案 1 :(得分:0)
我不认为requestNavigationLinks
是LayoutState中已定义的属性。您可以尝试将其添加到界面中。
例如:
export interface LayoutState {
isLoading: boolean;
links: string[];
requestNavigationLinks: func;
}