反应-什么都不返回

时间:2019-03-08 18:14:18

标签: javascript reactjs

我的私人路线(管理员)有问题。外观如下:

const PrivateRoute = ({ component: Component, ...rest }) => {
  const { user } = rest.user

  return (
    user.length
    ? (
      <Route
        {...rest}
        render={ props => {
          user[0].tier > 1
          ? (
            <Component {...props} />
          ) : (
          <Redirect
            to={{
              pathname: '/app/unauthorized',
            }}
          />
          )
        }}
      />
      ) : (
      <Redirect
        to={{
        pathname: '/app/unauthorized',
        }}
      />
    )
  )
}

当用户登录并具有特定特权时,此路由应返回作为道具发送的组件,如下所示:

<PrivateRoute path={`${url}/`} component={ AdminDashboard } />

但是我收到一个错误,认为渲染函数没有返回任何内容。我想念一些东西吗?

2 个答案:

答案 0 :(得分:2)

您不返回渲染函数中的组件:

  <Route
    {...rest}
    render={ props => {
      /// THERES NO RETURN STATEMENT ...
      user[0].tier > 1
      ? (
        <Component {...props} />
      ) : (
      <Redirect
        to={{
          pathname: '/app/unauthorized',
        }}
      />
      )
    }}
  />

答案 1 :(得分:1)

我认为您忘记在Route中遵循波纹管代码返回渲染方法

 const PrivateRoute = ({ component: Component, ...rest }) => {
  const { user } = rest.user

  return (
    user.length
    ? (
      <Route
        {...rest}
        render={ props => 
          user[0].tier > 1
          ? (
            <Component {...props} />
          ) : (
          <Redirect
            to={{
              pathname: '/app/unauthorized',
            }}
          />
          )
        }
      />
      ) : (
      <Redirect
        to={{
        pathname: '/app/unauthorized',
        }}
      />
    )
  )
}