【问题标题】:change switch main path according to api根据api更改切换主路径
【发布时间】:2021-07-05 09:46:28
【问题描述】:

React(hooks)beginner here,当驱动程序或管理员访问网站时,它是这样的(示例): App.js:

  <div className="app">
      <Switch>
         <Route path="/a">
          <A />
        </Route>
        <Route path="/c">
          <C />
        </Route>
        <Route path="/b">
          <B />
        </Route>
        <Route path="/">
          <Redirect to="/a" />
        </Route>
      </Switch>
    </div>

如您所见,主路径是这样的: &lt;Route path="/"&gt; &lt;Redirect to="/a" /&gt; &lt;/Route&gt;

这是我从 API 中得到的:

{ “id”:“2222”, “名称”:“随机2”, “isAdmin”:是的, “isDriver”:假, “是客户”:假, “公司”: { “id”:“11111”, “名称”:“随机”

} }

我的意思是如何改变主路径,例如如果“isCustomer”:true,那么主路径是&lt; Route path="/"&gt; &lt;Redirect to="/g" /&gt; &lt;/Route&gt;

【问题讨论】:

  • 这能回答你的问题吗? React Router Redirect Conditional
  • 既然大家都说 Hooks 比较容易上手,我就从它开始,我不知道类是如何工作的

标签: javascript html reactjs routes react-router


【解决方案1】:

完全未经测试,但我的直觉是:

使用useState 保存默认路由,如果您的 api 调用结果显示它是客户,则更新默认路由。将状态传递给Redirect

import React, {useState, useEffect } from "react";

...

const [ defaultRoute, setDefaultRoute ] = useState("/a");

...

useEffect( () => {}, [
  ...fetch api stuff...
  
  if(isCustomer()) setDefaultRoute("/g");
]);

...

return (<div className="app">
      <Switch>
         <Route path="/a">
          <A />
        </Route>
        <Route path="/c">
          <C />
        </Route>
        <Route path="/b">
          <B />
        </Route>
        <Route path="/">
          <Redirect to={defaultRoute} />
        </Route>
      </Switch>
    </div>);

【讨论】:

  • 为了测试目的你能用 { "id": "2222", "name": "Random2", "isAdmin": true, "isDriver": false, "isCustomer": false, " company": { "id": "11111", "name": "Random" } } 并且有一些工作演示?如果可能的话?
猜你喜欢
  • 1970-01-01
  • 2021-03-25
  • 1970-01-01
  • 2019-12-04
  • 2022-09-30
  • 1970-01-01
  • 2018-05-29
  • 2017-01-25
  • 1970-01-01
相关资源
最近更新 更多