【发布时间】:2021-09-27 04:26:17
【问题描述】:
在按下浏览器back button 时,为什么会显示一个空白页面而不是我之前访问过的组件?只有 URL 更改为前一个。
使用 React Router v5
这真是令人沮丧,我该如何解决这个问题?
SignUp.js
render() {
return (
<div className='signUp-div'>
<Header />
<Router history={history}>
<div className='form-div'>
<Redirect to='/signup/mobile' /> // Default page
<Switch>
<Route exact path={'/signup/mobile'} component={MobileNum} />
<Route exact path={'/signup/idnumber'}>
<IdentNumber setPersonalID={this.props.setUserNumber} />
</Route>
<Route exact path={'/signup/password'}>
<CreatePass
setIfSignUp={this.props.setIfSignUp}
/>
</Route>
</Switch>
</div>
</Router>
</div>
);
}
IdentNumber.js
const IdentNumber = ({setPersonalID}) => {
const handleCheckID = () => {
history.push('/signup/password');
}
return (
<div className='form-div'>
<button
onChange={(event) => onChangeHandler(event)}
> Page password</button>
</div>
);
};
export default IdentNumber;
我解释对了吗?
谢谢
【问题讨论】:
-
你能把这些组件和导入一起放在一个代码框里吗?然后我们将在聊天中连接。
-
@deechris27 你的意思是你不知道你做了什么改变?我如何追踪它们,我尝试了你在这里告诉我的内容,它在代码沙盒中看起来一样。我怎样才能下载你的文件?我复制了 SigUp 和 Index - 没有改变同样的问题。
-
@deechris27 不是那个 path='/signup/mobile' 让它倒退,它是
exact键码使它不回到上一页,我不知道为什么.所有这些时间,几天,我认为没有exact代码它不会传输页面 -
因为我改变了很多东西。它何时起作用变得难以追踪。我注释掉了 App 中添加的路线,但仍然有效。是的,您对“确切”的看法是正确的。
-
除了默认的“/”之外的所有路由都不需要“exact”键,当它包含在switch中并放在最后时。你有像 /signup 和 /signup/mobile 这样的路线,起初让我觉得它是必要的。但完全匹配 /signup 和 /signup/* 相同。 Switch 只渲染一个路由,并且首先匹配哪个路由。路由定义的顺序很重要。这就是让我想到将 MobileNum 路由从注册转移到 App.js 的原因。
标签: reactjs react-router navigation react-navigation react-router-dom