グローバル コンポーネント Vue3 をカプセル化する際に発生する問題

序文:
クエリの単純なカプセル化コンポーネントが作成され、ページは次の
ここに画像の説明を挿入
コードのようになります。

1.在公共组件的文件中创建了一个叫Search.vue的文件
<template>
  <div>
    <van-search v-model="searchVal" show-action :placeholder="placeholder">
      <template #action>
        <div @click="onClickButton">搜索</div>
      </template>
    </van-search>
  </div>
</template>
<script setup name="Search">
// 必须先声明
const emit = defineEmits();
const props = defineProps({
    
    
  placeholder: {
    
    
    type: String,
    default: "请输入",
  },
});
const searchVal = ref('');
function onClickButton() {
    
    
 emit("getSearchVal", searchVal.value)
}
defineExpose({
    
     onClickButton})

// 将子组件的方法暴露给父组件
</script>

2. components文件下新增index.js (这么写 方便以后有更多的公共组件, 统一维护在此文件夹)
用来引入上边创建的Search.vue文件
import Search from "./Search.vue";
export default {
    
    
  install(app) {
    
    
    app.component(Search.name, Search);
  },
};

3. 上記のファイルの結果は次のようになります
ここに画像の説明を挿入

4. main.js の (2) ステップで index.js ファイルを導入します。

(也可以在mian.js文件中直接引入, 这里考虑到日后可能还会有其他的公共组件, 所以写在了index.js中,看起来不会乱~)
import components from "@/components"; // 公共组件
app.use(components)

上記のグローバルに利用可能なコンポーネントが作成され、
必要なファイルに導入されました。

 <search ref="searchRef" @getSearchVal="getSearchVal" placeholder="请输入人员姓名或工号"></search>
<script setup name="AddPeople">
const searchRef = ref(null);
function getSearchVal(val) {
    
    
  console.log(val, 'search组件中的值');
}
</script>

おすすめ

転載: blog.csdn.net/weixin_42792519/article/details/127633114
おすすめ