为了账号安全,请及时绑定邮箱和手机立即绑定

vue 在不使用 vuex 的情况下组件与组件之间的通信问题

vue 在不使用 vuex 的情况下组件与组件之间的通信问题

桃花长相依 2018-08-31 18:14:09
三个组件:index.vueregister.vuelogin.vue说明一下彼此之间的关系:index.vue 包含 login.vue通过 prop 属性和 自定义事件 vue.$emit('xxx') 通信register.vue 包含 login.vue彼此通过 prop 属性和 自定义事件 vue.$emit('xxx') 通信index.vue 通过 <router-view> 到 register.vue彼此之间没有直接的关系问题:index.vue 和 register.vue 都包含一个登录按钮和登录状态:     data() {             ifLogin: false; // 未登录     }当我点击 index.vue 的登录按钮,login.vue 会通过弹窗形式弹出,并且经过表单输入后点击登录,会把登录状态传回给 index.vue,然后 index.vue 的登录状态切换成 ifLogin: true 这一步已经完成没有问题很简单当我点击 register.vue 的登录按钮,login.vue 也会通过弹窗形式弹出,并且经过表单输入后点击登录,会跳转到 index.vue 这个首页,但问题是 index.vue 中的登录状态没有切换,我需要刷新一遍登录状态才会变成 ifLogin: true 。我希望能不刷新页面 index.vue 的状态就切换。不明白我问题的话思考一下,其实就是login.vue 分别给 index.vue 和 register.vue 都绑定了通信如果不用 vuex 我这个问题有没有可以解决的办法。非常感谢
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

如果不用vuex保存登录状态的话,就我的想法来看,有两种办法。其一,就是在login中登陆成功后,将登陆状态保存到sessionStorage中,在每一次进入index中之间,都先判断下sessionStorage中的登录状态,如果为真,则将index中的状态置为真,如果为假,则isLogin不做改变,还是未登录;第二种就是可以在跳回到index的时候把isLogin为真作为query传递到index,再在index中判断传递过来的query。其实原理都是一样,只不过一个是query,另一个是sessionStorage罢了。就我的经验,登录状态用sessionStorage更合理些。

查看完整回答
反对 回复 2018-09-09
  • 1 回答
  • 0 关注
  • 818 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信