使用vue+vue-router时兄弟组件通讯的一些疑问

发布于 2022-09-03 11:34:03 字数 1122 浏览 18 评论 0

使用vue+vue-router时的一些疑问:

问题一:兄弟组件怎样传值?比如A页面与B页面是根组件的两个子组件,它们两个就是兄弟组件,那么如果想A页面跳转B页面时,将A页面的一些数据带到B页面,应该怎样做才是最好?

我的想法:1.通过路由的动态片段传值过去

router.map({
  '/user/:username': {
    component: {
      template: '<p>用户名是{{$route.params.username}}</p>'
    }
  }
})

2.让根组件做桥梁传递值
即A组件$dispatch给根组件,然后根组件收到了再$broadcast给B组件。额,想是这样想,但实现起来好像还是有点问题,A组件$dispatch根组件能收到A传过来的值没问题,但这时还是在A页面,还没切换到B页面去,那根组件在什么时机去$broadcast,B页面才能收到?

问题二:因为使用vue-router要用<router-view> 渲染匹配的组件。还是上面的A页面B页面,根组件用<div id="app"></div>表示,这时如果A页面与B页面都需要props,那怎样传递?

1.如果不使用vue-router

<div id="app">
    <A :prop-a="a"></A>
    <B :prop-b="b"></B>
</div>

这样当然是没问题很容易可以做到。
2.使用vue-router

<div id="app">
    <router-view></router-view>
</div>

问题是:这里使用了<router-view>代替了,虽然<router-view>也可以传递props,但这样的话难道要<router-view :prop-a="a" :prop-b="b"></router-view>这样写在一起?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

爱的那么颓废 2022-09-10 11:34:03
  1. 可以在路由的切换钩子函数中,通过transition.from拿到跳转前页面的route

  2. 通过props

  3. 没有vue-router的话,在A组件beforeDestroy的时候$dispatch需要的数据,父组件接收并且在$nextTick()$broadcast,B组件接收到数据

  4. vuex

饭团 2022-09-10 11:34:03

向上派发:dispatch 向下广播:broadcast

demo:https://github.com/TIGERB/eas...

洋洋洒洒 2022-09-10 11:34:03

组件通讯问题都交给vuex解决吧

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文