react-router-dom-v6 更改 useHistory
react-router-dom-v6 change useHistory
const Routing=()=>{
const Navigate=useNavigate()
const {state,dispatch}=useContext(UserContext)
useEffect(()=>{
const user=JSON.parse(localStorage.getItem("user"))
if(user){
dispatch({type:"USER",payload:user})
}
else{
if(!history.location.pathname.startsWith('/reset'))
Navigate('/signin')
}
},[])
因为我正在使用 react-dom-v6
,所以我知道我需要用 Navigate
替换 history.location.path.startsWith('/reset')
并且我看过帖子,但 none 专注于此。
如果有人能告诉我,那将非常有帮助!
好的。在这种情况下使用 useNavigate 是错误的。您可以使用 useLocation 挂钩。你的代码应该是这样的。
const Routing = () => {
const navigate = useNavigate();
const location = useLocation();
const { state, dispatch } = useContext(UserContext)
useEffect(() => {
const user = JSON.parse(localStorage.getItem("user"))
if (user) {
dispatch({ type: "USER", payload: user })
}
else {
if (location.pathname.startsWith('/reset'))
navigate('/signin')
}
}, [])
你可以看看react router v6
https://reactrouter.com/docs/en/v6/getting-started/concepts#history-object
const Routing=()=>{
const Navigate=useNavigate()
const {state,dispatch}=useContext(UserContext)
useEffect(()=>{
const user=JSON.parse(localStorage.getItem("user"))
if(user){
dispatch({type:"USER",payload:user})
}
else{
if(!history.location.pathname.startsWith('/reset'))
Navigate('/signin')
}
},[])
因为我正在使用 react-dom-v6
,所以我知道我需要用 Navigate
替换 history.location.path.startsWith('/reset')
并且我看过帖子,但 none 专注于此。
如果有人能告诉我,那将非常有帮助!
好的。在这种情况下使用 useNavigate 是错误的。您可以使用 useLocation 挂钩。你的代码应该是这样的。
const Routing = () => {
const navigate = useNavigate();
const location = useLocation();
const { state, dispatch } = useContext(UserContext)
useEffect(() => {
const user = JSON.parse(localStorage.getItem("user"))
if (user) {
dispatch({ type: "USER", payload: user })
}
else {
if (location.pathname.startsWith('/reset'))
navigate('/signin')
}
}, [])
你可以看看react router v6 https://reactrouter.com/docs/en/v6/getting-started/concepts#history-object