vue.js - 将自定义指令添加到 vuejs 渲染函数中的插槽

标签 vue.js vuejs2

我想创建一个无渲染组件,将自定义指令添加到它的根槽,并封装一些与该指令相关的行为。

我知道我可以使用 createElement(),将 directives 定义为其选项的一部分,然后返回一个 VNode。我还知道我可以通过 this.$slots.default[0] 访问渲染函数中的插槽。这已经包含一个 VNode,所以我无法将它传递给 createElement() 来添加指令。接下来我知道的是,我可以通过其属性 (VNode.data.directives...) 访问 VNode 的现有指令。

我能否以某种方式将所有这些组合起来以获取根槽,并向其添加指令而不创建包装元素?任何帮助/解释表示赞赏。

最佳答案

这对我有用。

export default {
    functional: true,
    render(h, ctx) {
        const slots = ctx.slots();
        const slot = slots.default[0];
        slot.data.directives = slot.data.directives || [];
        slot.data.directives.push({
            name: 'custom-directive',
        });
        return slot;
    },
};

关于vue.js - 将自定义指令添加到 vuejs 渲染函数中的插槽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60728343/

相关文章:

javascript - v-select 更新 var 而不使用 v-model

jquery - 当Jquery更改文本输入时,Vuejs如何强制v-model更新?

vue.js - 如何在 vuejs 应用程序中设置动态基本 url?

html - 如何防止命名空间 HTML 元素的 Vue 错误 "Unknown custom element"

javascript - Vue JS显示所选数组的内容

javascript - Vue.js - 如何正确有条件地设置点击处理程序代码

vue.js - 将 ejs 中的对象传递给 vue 方法

javascript - 使用 VueJS 中的插槽访问其他组件中的组件数据

javascript - Vue 方法中的 setTimeout 不起作用

vue.js - 如何在nuxt js中制作包含所有页面的压缩js文件