2017-05-28 9 views
0

反応し、私はこのエラーネストされたコンポーネントでは、私は、このコンポーネントを持ってReduxの

を取得

export default class Dashboard extends React.Component<RouteComponentProps<{}>, {}> 
{ 
    public render() 
    { 
     return <div><UserInfo /></div>; 
    } 
} 

が、コンテナなど

type UserInfoProps = UserInfoState.IUserInfoState & typeof UserInfoState.actionCreators 

class UserInfo extends React.Component<UserInfoProps, UserInfoState.IUserInfoState> 
{ 
    public componentWillMount() 
    { 
     this.props.loadUserInfo(); 
    } 

    public render() 
    { 
     return <div>{this.props.firstname + ' ' + this.props.lastname}</div> 
    } 
} 

export default connect((state: ApplicationState) => state.userInfo, UserInfoState.actionCreators)(UserInfo) as typeof UserInfo; 

と第二成分TS2324プロパティ 'ファーストネームは' に欠けている

タイプ 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly < {ch ildren ?: ReactNode; }> & ... '

私はここで間違って何をすればよいですか?

答えて

1

<UserInfo />コンポーネントの場合は、firstnameが送信されている必要があります。

UserInfoPropsは、コンポーネントに送信する必要があるものを定義します。

firstnameを追加してみてください。

<UserInfo firstname="somebody" />

コメントから、すぐに小道具を必要としないようにしたいようにあなたがそのオプションを活字体伝えるために?が含まれるであろうことをやって...そうです。

UserInfoProps = { 
    firstname?: string; 
    lastname?: string; 
} 
+0

しかし、私は 'UserInfo'コンポーネントを作成して、コンテナの干渉を排除してロジックを実行します。このように、私は 'loadUserInfo'関数のようなコンテナからすべてを渡す必要があります。私はここで何か悪いですか? – Raika

+0

私が言っているのは、typescriptです。あなたは、コンポーネントが取得するはずの小道具を定義します。それらの小道具を渡さないと、コンパイラが失敗し、そのエラーメッセージが表示されます。いずれかのプロパティをコンポーネントに渡す必要があるか、またはそれらのプロパティをオプションにする必要があります( '? ') –

+0

あなたの言うことを知っています。 'loadUserInfo'は' actionCreators'であり、optionnalではできません。 – Raika