为什么mobx 和 react-router结合使用,浏览器URL改变了,但是页面没有跳转?
组件使用inject和withRouter
export default inject(({ history, user }) => ({
history,
userInfo: user.userInfo,
}))(withRouter(TicketList));
从props里面获取history和match参数
const {
history: {
push,
},
match: {
path: matchPath,
},
} = props;
路由信息
<Switch>
<Route exact path={matchPath} render={renderLists} />
<Route path={`${matchPath}/:type/:ticketId`} render={renderDetail} />
</Switch>
改变路由行为
const handleOpenDetail = (ticketId, type) => {
push(`${matchPath}/${type}/${ticketId}`);
};
const returnToList = () => {
push(matchPath);
};
在列表页点击详情,浏览器url改变了,但是页面没跳转,但是刷新浏览器,页面就跳转到详情页了,这说明路由匹配没问题。这里浏览url改变了,为什么组件没有重新渲染呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没必要用mobx控制路由。可以自己使用路由自带的监听功能
this.props.history.listen(() => {