使用React Typescript的传播算子

时间:2018-10-17 09:45:39

标签: reactjs typescript react-tsx

我有一个单页应用程序,其重定向实现为

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 } }} />)}/>
    }
}
}

如何在打字稿中使用传播运算符传递道具?

更新

不用说,我不仅依赖于客户端代码进行身份验证。

我已经尝试过了,但是没有帮助:Spreading react props in tsx in typescript 2.3.1

1 个答案:

答案 0 :(得分:1)

rest未定义。

您的意思是:

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