跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Vue3 里 provide 一个 Vue 实例,为什么在 inject 时必须填写默认值?
未分類
29 8 月 2020

Vue3 里 provide 一个 Vue 实例,为什么在 inject 时必须填写默认值?

Vue3 里 provide 一个 Vue 实例,为什么在 inject 时必须填写默认值?

資深大佬 : Shook 21

confirm.js(多绑定了一个$store 用于测试):

import Vue, { createApp, App, ComponentPublicInstance } from 'vue'; import Confirm from './src/Confirm.vue';  const getInstance = (element?: string | Element): ComponentPublicInstance => {   return createApp(Confirm).mount(element ?? document.body); };  export default {   install: (app: App): void => {     const element = document.createElement('div');     document.body.appendChild(element);      app.provide('$confirm', getInstance(element));     app.provide('$store', { name: 'App', version: '0.1.0' });   },   default: Confirm }; 

在子组件中:

export default defineComponent({   setup () {     const confirm = inject('$confirm', { open: () => void 0 }),           store   = inject('$store');      const openConfirm = () => {       confirm.open();       console.log(store);       console.log('clicked button');     };      return {       confirm,       openConfirm     };   }, }); 

测试中发现 inject $confirm 必须要设定一个带有我需要的属性的默认值才能成功拿到,否则会报错(Object is of type ‘unknown’)。这个是不是 TS 的限制? 不过 inject $store 就不需要了,可以直接拿到并使用。

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具