Вложенный компонент в React Redux

1

У меня есть эти компоненты

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; }> &...' }> &... '

что я делаю неправильно здесь и что мне делать?

Теги:
react-redux
redux

1 ответ

1

Похоже, что для компонента <UserInfo/> требуется firstname для отправки. Вы оставляете первое имя.

UserInfoProps - это то, что определяло бы то, что компонент должен быть отправлен на него.

попробуйте добавить первое имя.

<UserInfo firstname="somebody"/>

Из комментариев кажется, что вы хотите не требовать реквизита сразу... для этого вы бы включили ? чтобы указать машинописный текст.

UserInfoProps  = {
    firstname?: string;
    lastname?: string;
}
  • 0
    но я создаю компонент UserInfo чтобы сделать его логику без вмешательства контейнера. таким образом, я должен передать все из контейнера, как функция loadUserInfo . Я тут что то не так делаю?
  • 0
    то, что я говорю, написано на машинописном тексте ... вы определяете реквизиты, которые должен получить компонент ... если вы не пропустите эти реквизиты, то компилятор потерпит неудачу и выдаст вам это сообщение об ошибке. Либо вам нужно передать свойство компоненту .. или вам нужно сделать эти свойства необязательными (с ? )
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню