針對vue3的render函數添加自定義指令

話不多說 直接上代碼?

主要是給h函數設置自定義指令控制

import '@/styles/reset.css'
import '@/styles/global.scss'
import 'uno.css'import { createApp } from 'vue'
import App from './App.vue'
import { setupRouter } from './router'
import { setupStore } from './store'
import { setupNaiveDiscreteApi } from './utils'
import { setupDirectives } from './directives'
import { permissions } from './globalVariables'async function bootstrap() {const app = createApp(App)// 注冊全局變量  添加permissions權限app.config.globalProperties.$permissions = permissionssetupStore(app)setupDirectives(app)await setupRouter(app)app.mount('#app')setupNaiveDiscreteApi()
}bootstrap()

import { router } from '@/router'const permission = {mounted(el, binding) {//拿到當前的route信息const currentRoute = unref(router.currentRoute)去取按鈕權限集合const btns = currentRoute.meta?.btns?.map(item => item.code) || []//判斷當前是否存在if (!btns.includes(binding.value)) {el.remove()}},
}export function setupDirectives(app) {//注冊自定義指令app.directive('permission', permission)
}

//resolveDirective 獲取當前已經注冊過的自定義指令
//withDirectives vue3提供給虛擬dom添加自定義指令的函數
//getCurrentInstance 獲取上下文
import { resolveDirective, withDirectives } from 'vue'// 獲取 按鈕權限 
const permissions = getCurrentInstance()?.appContext.config.globalProperties.$permissions
//獲取resolveDirective當前已經注冊的指令名 也就是v-xxxx
const permissionDirective = resolveDirective('permission'){title: '操作',key: 'actions',align: 'center',width: 100,fixed: 'right',render: (row) => {return [withDirectives(h(NButton,{size: 'small',type: 'primary',secondary: true,onClick: () => handleAddOrEdit('edit', row),},{ default: () => '修改' },),// 添加權限控制[[permissionDirective, permissions.editNotification]],),//交集設置h是否展示row.xxx === 2 && withDirectives(h(NButton,{size: 'small',type: 'error',style: 'margin-left: 12px;',secondary: true,onClick: () => handleDeleteRow(row),},{ default: () => '刪除' },),[[permissionDirective, permissions.delNotification]],),]},},

針對需要判斷狀態的時候

把他們放在同一級

row.state !== 2 && withDirectives(h(NButton,{size: 'small',type: row.state === 0 ? 'error' : 'warning',style: 'margin-left: 12px;',secondary: true,onClick: () => handlemore('6', row),},{ default: () => row.state === 0 ? '凍結' : '解凍' },),[[permissionDirective, permissions.frozenUser]],),

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/44574.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/44574.shtml
英文地址,請注明出處:http://en.pswp.cn/web/44574.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android studio之編譯提示Could not find :umeng-asms-v1.2.1

1 、問題 Could not determine the dependencies of task :app:compileDebugJavaWithJavac. > Could not resolve all task dependencies for configuration :app:debugCompileClasspath.> Could not find :umeng-asms-v1.2.1:.Required by:project :app> Could not …

FGF14:腦部疾病新潛力靶標

成纖維細胞生長因子14(FGF14)是FGF11亞家族成員,在神經元的所有基本特性(內在放電、興奮性和抑制性神經元的突觸傳遞和可塑性)中發揮作用。 (數據來源AlphaFold) FGF14由247個氨基酸組成&#x…

實戰篇(九):解鎖3D魔方的秘密:用Processing編程實現交互式魔方

解鎖3D魔方的秘密:用Processing編程實現交互式魔方 使用 Processing 創建一個 3D 魔方效果展示1. 安裝 Processing2. 項目結構3. 代碼實現4. 代碼解釋4.1. 初始化魔方4.2. 繪制魔方4.3. 處理鼠標事件4.4. 檢查點擊的面4.5. 旋轉面和最終確定旋轉5. 運行和測試6. 細節解釋6.1. …

【資源調度】2-如何解決資源調度問題?

導讀:本期是全網最全【資源調度】系列推文的第2期(共50期左右)。上期我們在《何為調度?》中,對調度的定義與作用、計劃與調度的關系、調度問題的拆解做了詳細介紹。從本期開始,我們選擇【客服調度】場景作為【資源調度】問題的具象…

51單片機(STC8H8K64U/STC8051U34K64)_RA8889_8080參考代碼(v1.3)

硬件:STC8H8K64U/STC8051U34K64 RA8889開發板 硬件跳線變更為并口8080模式,PS00x,R143,R142不接,R141無關 8080接口電路連接圖: 實物連接圖: RA8889開發板外接MCU連接器之引腳定義&…

IMS架構中的注冊與會話流程:RTPEngine集成及消息路由詳解

目錄 S-CSCF 調用 RTPengine 整體路由 注意 IMS 注冊流程 和 IMS 會話流程 的區別 IMS注冊流程 IMS會話流程(如INVITE請求) 這種設計的原因 P-CSCF 調用 RTPengine S-CSCF 調用 RTPengine 整體路由 UA a生成SDP offer,發送SIP INVITE請求(包含SDP offer)&…

核密度估計KDE和概率密度函數PDF(深入淺出)

目錄 1. 和密度估計(KDE)核密度估計的基本原理核密度估計的公式核密度估計的應用Python中的KDE實現示例代碼 結果解釋解釋結果 總結 2. 概率密度函數(PDF)概率密度函數(PDF)是怎么工作的:用圖畫…

RDNet實戰:使用RDNet實現圖像分類任務(二)

文章目錄 訓練部分導入項目使用的庫設置隨機因子設置全局參數圖像預處理與增強讀取數據設置Loss設置模型設置優化器和學習率調整策略設置混合精度,DP多卡,EMA定義訓練和驗證函數訓練函數驗證函數調用訓練和驗證方法 運行以及結果查看測試完整的代碼 在上…

ubuntu顯卡驅動重啟后失效的解決辦法

寫在前方:ubuntu系統,顯卡重啟后驅動失效,顯卡不可用。網上沖浪之后得以有效解決,以下是解決方案 查看顯卡nvidia-smi;驅動失效消息: (base) rootnode:~# nvidia-smi NVIDIA-SMI has failed because it c…

AI大模型走進汽車車機,智駕將是未來

車機里的AI大模型在汽車行業中的應用越來越廣泛,主要體現在智能座艙和自動駕駛系統的深度融合上。通過將AI大模型應用于車機系統,可以實現更高智能化的人車交互體驗。AI大模型作為人工智能發展的核心引擎,正在成為汽車智能化發展的關鍵之一。…

基于顏色模型和邊緣檢測的火焰識別FPGA實現,包含testbench和matlab驗證程序

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) 將FPGA仿真結果導入到matlab顯示結果: 測試樣本1 測試樣本2 測試樣本3 2.算法運行軟件版本 vivado2019.2 …

MySQL配置數據庫的連接命令

MySQL配置數據庫連接命令 在MySQL中,配置數據庫連接的命令涉及創建用戶、授予權限、配置主從復制等多個方面。以下是常用的命令及其用途: 創建用戶 創建一個新的數據庫用戶并為其設置密碼: CREATE USER usernamehost IDENTIFIED BY passwo…

mysql中的存儲過程

存儲過程的作用:有助于提高應用程序的性能。存儲過程可以不必發送多個冗長的SQL語句 廢話不說多,直接實操 ##實現num的相加 delimiter $$ CREATE PROCEDURE test1 () begindeclare num int default 0; -- 聲明變量,賦默認值為0select num20;end $$ delimiter ; …

計算機網絡高頻面試題

從輸入URL到展現頁面的全過程: 用戶在瀏覽器中輸入URL。瀏覽器解析URL,確定協議、主機名和路徑。瀏覽器查找本地DNS緩存,如果沒有找到,向DNS服務器發起查詢請求。DNS服務器解析主機名,返回IP地址。瀏覽器使用IP地址建立…

Kafka配置SASL認證

Kafka加密 Kafka認證方式 在本博客中我們使用SASL/PLAIN的方式來進行Kafka加密 環境準備 Kafka集群環境 請參考之前的Kafka集群搭建 kafka-broker1kafka-broker2 集群配置SASL/PLAIN認證 用戶校驗 修改server.properties 讓其支持Kafka的認證(每一個broker節點都需要修改這…

jail內部ubuntu apt升級失敗問題解決

在FreeBSD jail 里安裝啟動Ubuntu jammy系統,每次裝好執行jexec ubjammy sh進入Ubuntu系統后,執行apt update報錯。 這個問題困惑了好久,突然有一天仔細去看報錯信息,查看了(man 5 apt.conf) ,才搞定問題。簡單來說就是…

MySQL 數據庫(基礎)- 函數

MySQL 數據庫(基礎)- 函數 介紹 函數 是指一段可以被另一段程序調用的程序或代碼。也意味著,這一段程序或代碼在 MySQL 中已經給我們提供了,我們需要做的就是在合適的業務場景調用對應的函數,完成對應的業務需求即可…

python的簡單爬取

需要的第三方模塊 requests winr打開命令行輸入cmd 簡單爬取的基本格式(爬取百度logo為例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回應 #保存到本地 with open(&…

中國物流信息軟件系統(WMS等)行業概覽,2027年將達到235.1億元

導語 大家好,我是社長,老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》人俱樂部 完整版文件和更多學習資料,請球友到知識星球【智能倉儲物流技術研習社】自行下載 這份文件是《2023年中國物流信息軟件系統行…

【Python】下載與安裝

目錄 一、 下載安裝Python 1. 配置環境變量 2. 檢查是否配置成功 一、 下載安裝Python 在我上傳的資源可以免費下載!!! https://download.csdn.net/download/m0_67830223/89536665?spm1001.2014.3001.5501https://download.csdn.net/dow…