自定义组件如何路由?
很多开发者在有赞标准交易流程内,想插入一个独立功能页面,通过自定义组件的方式,弹出遮罩层将原本页面遮住,然后在遮罩层上面定义一套页面,这套页面之间还需要路由的切换。如果只是简单的 show 和 hide 的操作,用户点击浏览器的后退按钮的时候,就会跳转到了自定义组件的上一个页面,体验非常不好。
其实我们可以通过自定义哈希的方式,来控制浏览器的后退按钮,具体步骤如下:
1、弹出遮罩层,我们在 url 后面拼接哈希
2、在自定义组件内,任意页面切换,我们在显示新组件的时候,同步改变哈希, 推入 history 栈
3、监听哈希变更,通过判断不同的哈希,确定我们路由栈的位置,改变页面的显示隐藏
核心代码为:
window.addEventListener('popstate', e => {
console.log(e.state)
},false);
window.history.pushState(null, null, '#abcd')