React Router Dom 重定向需要刷新页面才能工作

React Router Dom Redirect needs to refresh the page to work

我正在使用 react-router-dom,我在重定向时遇到了奇怪的行为。我正在尝试从 / 重定向到 /something。所以我用了:

        <Switch>
            <Redirect
                exact
                from='/'
                to='/something'
            />
            <Route
                component={Garden}
                exact
                path='/something'
            />
        </Switch>

当我打开 localhost:3000/ 时,我被重定向到 localhost:3000/something 但页面是空白的。当我刷新页面或直接访问 /something 时,页面显示正常。

当我使用 react-router-hash-link 处理锚标签时,会发生类似的行为。将滚动设置为平滑滚动时,我可以看到页面平滑滚动,但一旦到达标签,页面就会变成空白。为了让它工作,我需要刷新页面,这很不方便。

谢谢,

您在问题中显示的代码块看起来不错。

您可能没有正确配置路由器。

See working demo here I created here 使用您的 switch 代码。检查路由器配置并将其应用于您的代码库。

路由器

import {
  BrowserRouter as Router,
  Route,
  Switch,
  Redirect
} from "react-router-dom";
import Home from "./Home";

export default function App() {
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <Router>
        <Nav />
        <Switch>
          <Redirect exact from="/" to="/something" />
          <Route component={Home} exact path="/something" />
        </Switch>
      </Router>
    </div>
  );
}

分量

const Home = props => {
  const [val, setVal] = useState();
  useEffect(() => {
    fetch("https://jsonplaceholder.typicode.com/users")
      .then(res => res.json())
      .then(res => res.map(user => user.username))
      .then(userNames => setVal(userNames));
  });
  return <div>Home - {val}</div>;
};

export default Home;