V3+ts はどのようにカスタム命令を使用してプレースホルダー イメージをパッケージ化しますか?

1. <script setup lang="ts">カスタム命令を部分登録する

具体的な手順:

1. 変数名を定義し、v で始まるルールに従って定義し、v の後の変数名の最初の文字を大文字にします。例: vImg

2. Vue3 と vue2 では、命令のカスタマイズ方法が異なります. 命令の定義オブジェクトに対するフック関数が多数あります. 通常は、実装されているフック関数を直接使用します.

他のフック関数とそのパラメーターの使用については、vue3 カスタム手順の公式ドキュメントを直接参照できます。

カスタム ディレクティブ | Vue.js  


 

3. el は DOM 要素の属性を取得でき、バインディングの value 属性は渡された属性値を取得できます

4. 画像が間違ってロードされた場合は、el.onerrorを呼び出し、取得した値を el の src に割り当てて、画像が間違っている場合の占有を完了します。

実装コード: 

<script setup lang="ts">
// 部分的なカスタム イメージ プレースホルダー
const vImg = {   Mounted: (el: any, binding: { value: string }) => {     console.log(el, 1111111)     el.onerror = ( ) => { el.src       = binding.value     }   } </script>







html 構造: 

<img
  style="width: 80px; height: 80px"
  v-img="'https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg'"
  :src="userList.avatar"
  alt =""
/>

 2. main.tsカスタム命令をグローバルに登録する

具体的な手順:

1. 直接使用: app.directive('ディレクティブ名',{})

2. 部分登録と同様、実装されているフック関数に業務コードを記述する

実装コード: 

 // グローバル カスタム エラー プレースホルダー イメージ
app.directive('errorImg', {   mounted(el, binding) {     console.log(el, 1111)     console.log(binding, 222)     el.onerror = () => {       el. src = binding.value     }   } })







html で使用:

<img
  style="width: 80px; height: 80px"
  v-errorImg="'https://fastly.jsdelivr.net/npm/@vant/assets/cat.jpeg'"
  :src="userList.avatar"
  alt =""
/>

 

おすすめ

転載: blog.csdn.net/weixin_48082900/article/details/129168011