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

vue3 - 如何在Vue3的render渲染函数中为按钮添加自定义指令?

戚弘和
2023-12-20

Vue3 render函数创建的按钮怎么添加自定义指令

 h(            NButton,            {              quaternary: true,              size: 'small',              type: 'info',              text: true,              onClick: () => CreateLetter(row),              directives: [                {                  name: 'isAuth',                  value: '项目管理-创建函证',                }              ],            },            { default: () => '创建函证' }          ),

在template中直接写是可以的

<n-button type="info" @click="createProject" style="margin-bottom:30px;" v-isAuth="'项目管理-创建项目'">        创建项目  </n-button>

这样的话 正常显示

共有1个答案

苍德寿
2023-12-20

在 Vue 3 的 render 函数中,你不能直接在组件的属性中添加自定义指令,但你可以通过使用 v-bind 指令来动态地绑定自定义指令到元素上。

下面是如何在 render 函数中为按钮添加自定义指令的示例:

import { createComponent } from 'vue'export default {  setup() {    const createComponentInstance = (tag, props, children) => {      const component = createComponent(tag)      return component.createVNode(props, children)    }    const renderButton = () => {      const buttonProps = {        quaternary: true,        size: 'small',        type: 'info',        text: true,        onClick: () => CreateLetter(row),      }      const buttonNode = createComponentInstance('n-button', buttonProps)      // 添加自定义指令到按钮节点上      buttonNode.directives = [        {          name: 'isAuth',          value: '项目管理-创建函证',        }      ]      return buttonNode    }    return { renderButton }  },  // ...其他组件代码...}

在上面的示例中,renderButton 函数创建了一个 n-button 组件的虚拟节点,并使用 directives 属性添加了自定义指令。然后,你可以在模板中使用 renderButton 函数来渲染按钮。

请注意,在模板中使用 v-isAuth 指令时,你需要在值中传递一个字符串。而在 render 函数中,自定义指令的值是一个对象。因此,如果你想在 render 函数中使用与模板相同的值,你需要将自定义指令的值包装在一个对象中。

 类似资料:
  • 主要内容:实例,实例,钩子,实例,实例,实例除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时,元素获得焦点: 实例 <div id="app"> <p>页面载入时,input 元素自动获取焦点:</p> <input v-focus> </div> <script> const app = Vue.createApp({}

  • 官方文档 如何我想用渲染函数生成一个下拉框,并且双向绑定到一个名为choose的ref上,该怎么写?

  • 问题内容: 我想制作一个简单的表,其中包含一行自定义按钮。当按下按钮时,我想弹出一个“警告”框。我已经阅读了一些关于此的文章,我不明白为什么我的代码无法正常工作。绘制了按钮,但按下按钮无效。 我在这里描述了三种尝试。 版本1。单击按钮不会触发: HTML代码: 编辑8/2/12-自从我的原始文章以来,我已经学到了一些东西,在这里我描述了另外两次尝试。 版本2:我使用onCellSelect。这行得

  • 每次点击都要获取最新的goodsId,当前这个写法只能获取初始的goodsId: 100,自定义指令无法获取到goodsId的最新值。 尝试过的方法: 1、在updated内再一次获取最新值,但是每次点击,事件会触发多次。 2、在vnode上获取最新值,同样无法获取到最新值。 在此想请教一下各位

  • 本文向大家介绍asp.net-mvc 自定义助手-渲染提交按钮,包括了asp.net-mvc 自定义助手-渲染提交按钮的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我已经搜索并尝试了每个论坛和例子。 我正在Yii2中使用Kartik\DetailViwew,无法在buttons1选项中设置一个自定义按钮。 我正在处理的代码: 在的 根据http://demos.krajee.com/detail-view例子,有一种方法可以定制。但是没有例子。留档没有解释如何做到这一点。 有人能帮忙吗?