Vue JS 3:如何将数据从一个组件传递到另一个组件?

情人节

我正在尝试共享存储favorite_countFavorites.vue文件中收藏夹组件中的变量中的数据。我想与App.vue文件中的 App 组件共享该数据,但我无法共享我希望如果我更改favorite_count收藏夹组件中的值,它会在应用程序组件中更改。在网上做了很多研究,但还没有成功。关于我可能做错了什么的任何想法?

Favorites.vue file

<template>
    <div class="row m-5">
        <h3 class="col-8">Your Favorites</h3>
        <div class="col-4">
            <p class="pull-right m-1">Picks 
            <span >{{ favorite_count }}</span>  / 5</p>
        </div>
        <hr>
    </div>
</template>
<script>
export default {
    name: 'favorites',
    data() {
        return {
            favorite_count: 5,
        }
    },
    methods: {
        changeFavoriteCount() { 
            this.favorite_count = this.favorite_count + 2;
        },
        emitToParent (event) {
          this.$emit('childToParent', this.favorite_count)
        }
    }
}
</script>

App.vue 文件

<template>
    <div class="navbar navbar-expand-md navbar-dark bg-primary">
        <div class="collapse navbar-collapse" id="navbarResponsive">
            <ul class="navbar-nav"> 
                <li class="nav-item">
                    <router-link to="/favorites" class="btn btn-info">
                      Favorites ( {{ favorite_count }} )
                    </router-link>
                </li>
            </ul>
        </div>
    </div> 
</template>
<script> 
import Favorites from './components/Favorites.vue'
 
export default {
  name: 'App',
  components: {
    Favorites
  },
  data () {
    return { 
      favorite_count: 0, 
    }
  }
}
</script>
猎豹

如果您打算<router-view>稍后在您的应用程序中使用,我会建议此解决方案

如果要包含Favorites<template>in 中App.vue,则可以使用props

1.在父组件(App.vue)中声明你的'shared'变量

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

2.在你的子组件中定义 props (Favorites.vue)

export default {
  props: { favorite_count: Number },
  ...
}

3.favorite_count作为道具传递Favorites

<template>
  ...
    <Favorites :favorite_count="favorite_count" ... />
</template>

如果您需要更新favorite_count- 向父组件发出一个事件。Vue 文档中的更多信息

编辑:澄清一下:如果你favorite_count要从Favorites.vue更新,你需要向App.vue发出一个事件以避免改变 props。

这也意味着您需要将您的changeFavoriteCount()函数移动App.vue并将侦听器应用于您的子组件,它将调用此函数:

// App.vue
<template>
  ...
    <Favorites 
       @your-update-event="changeFavoriteCount" 
       :favorite_count="favorite_count" ...
    />
</template>

...

changeFavoriteCount(newVal) { 
    this.favorite_count = newVal;
},

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Vue.js-如何从另一个组件调用方法

在Laravel中将数据从一个Vue.js组件传递到另一个组件的最佳实践

Vue-Router-将数据从一个路由组件传递到另一个

将数据从一个Vue.js实例输出到另一个实例

如何从vue.js中的另一个组件更新一个组件

React.js-将状态值从一个组件传递到另一个

如何在Vue.js中将props数据正确传递到另一个组件

将json对象的一个组件传递给另一个vue.js

如何将组件作为道具传递给Vue.js中的另一个组件

如何将道具从另一个js模块传递到Vue?

如何将计算的参数从一个Vue组件传递到另一个组件?

将Vue.js变量传递给另一个组件后未定义

Vue.js-从一个组件切换到另一个组件

Vue.js:将数据从一个子组件传递到具有相同父组件的另一个子组件吗?

将Vue.js组件嵌入另一个组件时不显示

React-如何将API数据从一个组件传递到另一个js文件中的另一个组件?

聚合物JS将功能从一个组件传递到另一个组件?

从vue.js中的另一个组件调用一个组件

在另一个 vue 组件中使用 Vue JS 组件方法

如何更改一个组件中的状态并在另一个 Vue.js 中监听它?

如何将数据从一个组件传递到 vue 上的另一个组件?

Vue JS 如何从一个数据中取一个值到另一个数据?

Vue/Vuecli3 - 如何使用参数从一个组件路由到另一个组件

如何将方法从一个组件传递到另一个组件并在 Vue.js 中使用它?

Vue.js 将变量从一个组件传递到另一个组件 (jQuery)

将 React.js 中的函数从一个函数组件传递到另一个

如何将数组长度传递给 vue.js 中的另一个组件(从子组件到父组件)?

ANGULAR.js 将函数从一个组件传递到另一个组件

如何在 Vue 中将产品数据从一个组件传递到另一个组件?