小编rmo*_*lva的帖子

对象可能为“空”。在 ref(null) 上

学习Vue公司组成的API(和打字稿),从我发现的文档,我应该使用ref(null)一个子组件我有内部使用<template>...</template>

这个子组件有像这样的方法open(),我像这样访问它:

setup() {
    const subcomponentRef= ref(null);
    subcomponentRef.value.open();
    return { subcomponentRef };
}
Run Code Online (Sandbox Code Playgroud)

我同意这可能会显示Object is possibly 'null'.指向的错误subcomponentRef.value,但奇怪的是即使我添加了条件if (subcomponentRef !== null && subcomponentRef.value !== null) { ... },它仍然显示该错误。为什么??

也尝试访问它,subcomponentRef?.value?.open()但我收到此错误Property 'open' does not exist on type 'never'.

还尝试添加非空断言,例如confirmation.value!.open();并收到相同的错误Property 'open' does not exist on type 'never'.

知道这里有什么问题吗?或者ref(null),我应该使用实际组件预定义它而不是使用?但我不知道如何正确地做到这一点,在文档中找不到。

typescript vue.js vuejs3 vue-composition-api

8
推荐指数
2
解决办法
2696
查看次数

Vue Composition API:有没有更好的方法在可消费文件中调用`emit`?

emit在分离的逻辑文件中访问的正确方法(或更好的方法)是什么?

这就是我目前所做的工作:

foo.js

export default (emit) => {
    const foo = () => { emit('bar') };
    return { foo };
}
Run Code Online (Sandbox Code Playgroud)

然后在消费组件上:

import { defineComponent } from '@vue/composition-api';
import foo from './foo';

export default defineComponent({
  setup(props, { emit }) {
    const { foo } = foo(emit);
    return { foo };
  }
});
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更合适的方法来做到这一点?或者emit在可消耗文件中调用是一种不好的做法吗?

javascript typescript vue.js vuejs3 vue-composition-api

3
推荐指数
1
解决办法
3905
查看次数

如何使 &lt;p&gt; 标签内的文本垂直居中?

我试图将 <p> 标签在其容器内居中,虽然我已经能够(使用 top/translateY)技巧将标签本身居中,但文本的中心实际上并不是 <p> 的中心标签的内容,如下所示(红线是标签的真正中间):

在此输入图像描述

如何使 <p> 标签中的文本也居中?

html css centering

1
推荐指数
1
解决办法
1万
查看次数