我想知道如何在react中加载页面时将用户引导到正确的语言路径?
我知道我可以用navigator.language检测他们的本地化语言。但是,我如何使用它将它们立即路由到一个页面呢?
你可以在你的应用程序中有一个功能组件作为介绍组件,它将读取该位置并使用useHistory
钩子路由到正确的语言,像这样:
import { useHistory } from "react-router-dom";
function HomePage() {
const history = useHistory();
React.useEffect(() => {
// Use navigator.language here
history.push("/en");
}, []);
return (
<div>
Loading...
</div>
);
}
你可以在React Router文档和React Hooks文档中了解更多。
你应该阅读https://reactrouter.com/web/api/
navigator.language
返回浏览器的语言,我认为这是你真正想要的
我用basename
做了这是BrowserRouter
的性质之一
import {
BrowserRouter,
NavLink,
Redirect,
Route,
Switch
} from "react-router-dom";
import "./styles.css";
export default function App() {
const lang = navigator.language.split("-")[0];
return (
<div className="App">
<BrowserRouter basename={lang}>
<Menu />
<Switch>
<Redirect exact from="/" to="/home" />
<Route path="/" exact component={Home} />
<Route path="/home" exact component={Home} />
<Route path="/about" exact component={About} />
<Redirect to="/home" />
</Switch>
</BrowserRouter>
</div>
);
}
export const Menu = () => {
return (
<>
<NavLink to="./home">Home</NavLink>
<span> / </span>
<NavLink to="./about">About</NavLink>
</>
);
};
export const Home = () => {
return <h1>Home</h1>;
};
export const About = () => {
return <h1>About</h1>;
};