vue.js - 观点:将 Prop 传递给所有后代

标签 vue.js

我有一个带有以下行的父组件

<router-view :product-id="productId" :data-source="attributes"></router-view>

根据上下文,它呈现路由器配置中定义的两个组件之一
path: 'parent',
component: Parent,
children:
[
    {
        path: 'edit',
        component: Edit,
        children:
        [
            {
                path: 'attribute/:id',
                component: Attribute,
            }
        ]
    },
    {
        path: 'grid',
        component: Grid,
    }
]

事实是,product-id和data-source Prop 仅在Edit和Grid组件中可用。我想在Attribute组件中使用它们,而Edit组件只是一些静态文本的背景(许多组件都常见)。

解决方法是,我在“编辑”组件中创建了一个propertyBag Prop ,该 Prop 将对象向下传递。这就是我在父组件中使用它的方式
 <router-view :property-bag="{ productId:productId, dataSource:dataSource, ...

和编辑组件
<router-view :property-bag="propertyBag"></router-view>

有没有更简单的方法来实现它?

最佳答案

你看过vuex吗?它确实非常易于使用,并允许您将整个应用程序的数据存储在一个数据存储中。这意味着您不必一直通过 Prop 传递数据,只需访问商店中设置的变量即可。

这是vuex文档的链接(什么是Vuex)
https://vuex.vuejs.org

关于vue.js - 观点:将 Prop 传递给所有后代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46608234/

相关文章:

vue.js - 如果值大于 50,则更改进度条的颜色 Bootstrap-Vue

javascript - 如何在组件外部访问 v-if 中的子组件数据?

javascript - Vue - 强制重新渲染所有组件

vue.js - 请参阅 webpack 开发服务器日志记录

linux - 尝试在 ubuntu 20.04 上安装 vue/cli 时权限被拒绝

vue.js - 因过渡而移动的过渡元素?

javascript - Vue.js - 未捕获( promise )TypeError : __WEBPACK_IMPORTED_MODULE_0__services_Api__. a.post 不是函数

javascript - 加载 css 文件时,带有 webpack 的 vue-cli 崩溃

vue.js - $el 未定义,而 $ref 在 Vuejs 3 中有一个对象

javascript - 以选择特定列表项为条件进行文本输入