У меня есть эти компоненты
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;
и второй компонент в качестве контейнера
export default class Dashboard extends React.Component<RouteComponentProps<{}>, {}>
{
public render()
{
return <div><UserInfo /></div>;
}
}
но я получаю эту ошибку
TS2324 Свойство 'firstname' отсутствует в типе 'IntrinsicAttributes & IntrinsicClassAttributes & Readonly <{children?: ReactNode; }> &...' }> &... '
что я делаю неправильно здесь и что мне делать?
Похоже, что для компонента <UserInfo/>
требуется firstname
для отправки. Вы оставляете первое имя.
UserInfoProps - это то, что определяло бы то, что компонент должен быть отправлен на него.
попробуйте добавить первое имя.
<UserInfo firstname="somebody"/>
Из комментариев кажется, что вы хотите не требовать реквизита сразу... для этого вы бы включили ?
чтобы указать машинописный текст.
UserInfoProps = {
firstname?: string;
lastname?: string;
}
UserInfo
чтобы сделать его логику без вмешательства контейнера. таким образом, я должен передать все из контейнера, как функцияloadUserInfo
. Я тут что то не так делаю??
)