当前位置: 首页 > 知识库问答 >
问题:

Vue路由器将数据传递给另一个组件

陈淳
2023-03-14

我在使用Vue路由器将数据从一个组件传递到另一个组件时遇到问题。

我在主组件中有此模板:

<li><router-link to="/">Daily</router-link></li>
<li><router-link to="/weekly/">Weekly</router-link></li>
<router-view></router-view>

在我的DailyComponent组件中,我有以下数据功能

data() {
  return {
    userCount: 0,
  }
}

第二个链接将发送到名为AcclyComponent的组件。

如何将userCount:0数据从DailyComponent传递到WeeklyComponent,然后显示在那里?

谢谢

共有2个答案

谷梁迪
2023-03-14

您可以使用Vuex或全局事件总线之类的工具。您还可以为这两个组件创建一个公共父组件。

如果您使用事件总线,您可以使用这些值发出事件,并在应用程序中的任何位置收听这些事件。如果您有一个公共父组件,则可以将userCount作为道具传递给两个子组件,然后将事件从子组件发送到父组件。每当一个子级想要更改值时,它都会发出事件,然后父级代表它更改值。

林建本
2023-03-14

这个问题更多的是关于如何以这种方式构建组件,以便在组件之间共享数据。有很多方法可以做到这一点,根据具体情况,每种方法都有各自的优缺点。我建议您搜索stackoverflow/google,寻找实现这一点的方法,因为已经对其进行了深入讨论。

userCount数据的所有者提升到父级

使父组件成为userCount数据的所有者,并通过props将其传递给子组件。如果子组件想要修改该数据,它们必须$emit一个带有父组件响应的新值的事件,以便更新该值。

const Daily = {
  props: ['userCount'],
  template: '<p>Daily: {{ userCount }} <button @click="increment">+ 1</button></p>',
  methods: {
    increment() {
      this.$emit('user-count', this.userCount + 1);
    }
  }
};

const Weekly = {
  props: ['userCount'],
  template: '<p>Weekly: {{ userCount }} <button @click="increment">+ 5</button></p>',
  methods: {
    increment() {
      this.$emit('user-count', this.userCount + 5);
    }
  }
};

new Vue({
  el: '#app',
  router: new VueRouter({
    routes: [
      { path: '/daily', component: Daily },
      { path: '/weekly', component: Weekly }
    ]
  }),
  data: {
    userCount: 0,
  },
})
<script src="https://rawgit.com/vuejs/vue/dev/dist/vue.js"></script>
<script src="https://rawgit.com/vuejs/vue-router/dev/dist/vue-router.js"></script>

<div id="app">
  <router-link to="/daily">Daily</router-link>
  <router-link to="/weekly">Weekly</router-link>
  
  <router-view :user-count="userCount" @user-count="userCount = $event"></router-view>
</div>
 类似资料:
  • 在我的Angular 2路由的一个模板(FirstComponent)中,我有一个按钮 first.component.html 我的目标是实现: 按钮点击->route to另一个组件,同时保留数据,而不使用另一个组件作为指令。 这是我试过的... 第一种方法 在同一个视图中,我存储、收集基于用户交互的相同数据。 First.Component.TS 通常通过ID路由到SecondCompone

  • 例如,在具有分页列表的路由上,网址可能如下所示,表示我们已加载第二个网页: 使用指令和来传递查询参数。例如: 或者,我们可以使用服务通过JS跳转: 读取查询参数 See Official Documentation on Query Parameters

  • 在几个儿童显示器中的一个中: 似乎我不能直接将数据注入。看起来我在web控制台中遇到了错误: 这有点道理,但是我该怎么做: 从服务器从父组件中获取“节点”数据? 是否将从服务器检索到的数据传递到子路由器插座? 的工作方式似乎不同。

  • 我是vue的初学者。我最近开始学习vue。我在vue组件中添加了一个道具。我认为代码似乎是正确的。但发生了一个错误。有人告诉我如何将字符串或数字传递给childComponent,以及如何检查它吗。 应用程序。vue 样品刀身php

  • 我有一些这样的路线 在NewUrlComponent中,我可以像这样轻松地获取数据 我遇到的问题是我在屏幕上有另一个组件,不知何故,我需要在另一个组件中显示该数据标题。我不知道这有可能吗?

  • 问题内容: 我尝试了以下失败的尝试: 在函数a中,我可以使用arguments关键字来访问参数数组,而在函数b中,这些参数将丢失。有没有办法像我尝试的那样将参数传递给另一个javascript函数? 问题答案: 用于对in函数具有相同的访问权,如下所示: