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

如何使用Vue composition API导入其他自定义组件?

彭风华
2023-03-14

我正在尝试使用composition API创建Vue 3组件库:

https://github.com/hyperbotauthor/vue3complib

在其中一个组件中,我想导入另一个组合API组件(https://github.com/hyperbotauthor/vue3complib/blob/main/src/components/ChessboardExt.vue):

import { Perscombo } from "../index"
const PerscomboE = (Perscombo as any).setup

const e = PerscomboE({id: "variant", options: variants}, context)()

const vertContainer = h(
            "div",
            {   
            },
            [e, outerContainer]
        );

这几乎是可行的,因为组件的节点是通过其设置功能创建的,甚至可以正确地呈现在页面上,但是它的onMounted功能没有被正确调用,我收到了警告

onMounted is called when there is no active component instance to be associated with.
Lifecycle injection APIs can only be used during execution of setup().
If you are using async setup(), make sure to register lifecycle hooks before the first await statement. 

这不仅是一个警告,但不幸的是,我需要它来初始化组件,因此如果没有它的onMount ted函数,它就不能完全正常工作,因为它应该是持久的,并且它的状态无法从localStorage初始化。

如何将其他合成API组件正确导入合成API组件的设置中?

编辑:

成功地从子组件中删除了onMounted,并且我可以在其状态发生变化时,在props中传递回调。所以我解决了这个问题。总的来说,我仍然不知道解决办法。

共有1个答案

薛弘厚
2023-03-14

您可以通过h函数传递导入的自定义组件,例如超文本标记语言标记。事件处理与超文本标记语言元素的工作方式相同:您在上以作为处理程序名称的前缀,使用骆驼大小写,并将处理程序作为具有此名称的属性传递:

     const variantCombo = h(Perscombo, {id: props.id + "/variant", options: variants, onPerscombochanged: (event:any) => {
         setVariant()
     }})

     const sizeCombo = h(Perscombo, {id: props.id + "/size", options: sizes, onPerscombochanged: (event:any) => {            
         resize(event.value)
     }})

     const upperControls = h(
         "div",
         {   
         },
         [variantCombo, sizeCombo]
     );

 类似资料:
  • 问题内容: 如何在Python中导入其他文件? 我到底该如何导入特定的文件呢? 如何导入文件夹而不是特定文件? 我想根据用户输入在运行时动态加载Python文件。 我想知道如何从文件中仅加载一个特定部分。 例如,在我有: 尽管这给了我中的所有定义,但也许我只想要一个定义: 我要从import语句中添加些什么? 问题答案: 是Python中的新增功能,用于以编程方式导入模块。它只是一个包装器,请参见

  • 问题内容: 有一些方法可以在使用JAXB生成的类中生成自定义方法。 我搜索了包括oracle的教程在内的教程,但没有找到明确的说明来说明如何自定义XML Schema中描述的生成类的方法。 问题答案: 您可以编写一个XJC插件: http://weblogs.java.net/blog/kohsuke/archive/2005/06/writing_a_plugi.html

  • 问题内容: 如何导入在其他文件中编写的类?我所有的课程都在同一个程序包下。 问题答案: 如果所有类都在同一个程序包中,则无需导入它们。 只需像这样实例化该对象:

  • 问题内容: 我需要在项目中导入Java类。我需要导入的类在具有绝对路径的JAR文件中 现在在我的源文件(Test.java)中 我正在与 它显示了stdlib不存在的错误。 我的导入语句正确还是类路径有问题?此import语句不应该导入JAR文件中存在的所有类吗? 我没有使用任何IDE,我的操作系统是Linux。 问题答案: import语句从jar文件而不是jar文件本身导入类。 形式的导入声明

  • 我在将存在acrofield从一个pdf导入另一个pdf时遇到问题。这两个pdf相似。我尝试导入并保存文件(下面的代码)。如果我从文件系统打开它,我看不到更改,但如果我用pdfbox打开它,我看到之前插入的acrofile。我注意到文件大小增加了,但当我打开它时,我看不到可填充的字段。 提前谢谢你

  • 我想在任何目录的任何脚本中导入自定义编写的函数,就像在任何脚本中导入请求模块一样。我正在运行Ubuntu和Python 3.9 编辑:我按照本教程完成了我的要求-https://packaging.python.org/tutorials/packaging-projects/