Оператор распространения с React Typescript

У меня есть одностраничное приложение с перенаправлением, реализованным как

const PrivateRoute = ({ component: Component, ...rest }) => (
<Route {...rest} render={(props) => (
    Acc.isLoggedIn === true
        ? <Component {...props} />
        : <Redirect to={{
            pathname: '/login',
            state: { from: props.location }
        }} />
)} />

)

export { PrivateRoute };

Я пытаюсь обновить его, чтобы он работал примерно так

interface IPrivateRouteProps {
}

interface IPrivateRouteState {
  isAuthenticated?: boolean
}

export class PrivateRoute extends React.Component<IPrivateRouteProps, IPrivateRouteState> {
constructor(props: IPrivateRouteProps) {
    super(props);

    this.state = ({ isAuthenticated: null });
}

componentDidMount() {
    Acc.isAuthenticated()
        .then(isAuthenticated => {
            this.setState({ isAuthenticated: isAuthenticated });
        });
}

render() {
    if (this.state.isAuthenticated == null) {
        return null;
    }
    else if (this.state.isAuthenticated) {
        return <Route {...rest} render={(props) => (<Component {...props} />)}/>
    }
    else {
        return <Route {...rest} render={(props) => (<Redirect to={{ pathname: '/login', state: { from: props.location } }} />)}/>
    }
}
}

Как я могу передать реквизит с помощью оператора распространения в машинописном тексте?

Обновить

Излишне говорить, что я не просто полагаюсь на клиентский код для аутентификации.

Я уже пробовал это, но это не помогло: Распространение реквизитов реакции в tsx в typescript 2.3.1


person Connell.O'Donnell    schedule 17.10.2018    source источник
comment
Какую ошибку вы получаете? Также isAuthenticated может быть только boolean или undefined в соответствии с IPrivateRouteState не нулевым.   -  person Jonathan Goodman    schedule 17.10.2018
comment
Ошибка: не удается найти имя «остальное».   -  person Connell.O'Donnell    schedule 17.10.2018
comment
Также rest не определено в PrivateRoute, поэтому технически вы пытаетесь распространить undefined.   -  person Jonathan Goodman    schedule 17.10.2018
comment
Вы можете использовать распространение только с объектом или массивом   -  person Jonathan Goodman    schedule 17.10.2018
comment
Машинописный текст не имеет к этому никакого отношения. Вы просто забыли определить переменную rest   -  person Nurbol Alpysbayev    schedule 17.10.2018


Ответы (1)


rest не определено.

Вы имеете в виду:

return <Route {...this.props} render={(props) => (<Component {...props} />)}/>

person Jonathan Goodman    schedule 17.10.2018
comment
Это просто не перенаправляется, когда я пытаюсь это сделать. - person Connell.O'Donnell; 17.10.2018
comment
Эта строка: return <Route {...rest} render={(props) => (<Redirect to={{ pathname: '/login', state: { from: props.location } }} />)}/> Должно быть больше похоже на: return <Redirect to={{ pathname: '/login', state: { from: props.location } }} /> - person Jonathan Goodman; 18.10.2018