首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转发参考类型记录:转发react元素

转发参考类型记录:转发react元素
EN

Stack Overflow用户
提问于 2022-08-12 06:06:59
回答 1查看 48关注 0票数 0

代码:

代码语言:javascript
复制
import React, { useImperativeHandle, useState } from 'react';


const SnackBar = React.forwardRef((_, ref) => {
  const [isSnackbarVisible, setisSnackbarVisible] = useState(false);

  const show = (text: string) => {
    setisSnackbarVisible(true);
  };

  const hide = () => {
    setisSnackbarVisible(false);
  };

  useImperativeHandle(ref, () => ({ show, hide }));

  if (!isSnackbarVisible) return;

  return (
    <div
      style={{ backgroundColor: 'rgba(0, 0, 0, 0.35)' }}
      className="absolute z-50 top-0 bottom-0 left-0 right-0  flex items-center justify-center"
    >
      <button
        onClick={() => {
          hide();
        }}
      >
        dasdas
      </button>
    </div>
  );
});

export default SnackBar;

错误:

代码语言:javascript
复制
 Argument of type '(_: {}, ref: ForwardedRef<unknown>) => Element | undefined' is not assignable to parameter of type 'ForwardRefRenderFunction<unknown, {}>'.
  Type 'Element | undefined' is not assignable to type 'ReactElement<any, string | JSXElementConstructor<any>> | null'.
    Type 'undefined' is not assignable to type 'ReactElement<any, string | JSXElementConstructor<any>> | null'.ts(2345)

这里的类型是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-12 06:27:10

当您的Snackbar不可见时,将返回与方法签名不兼容的隐式undefined。您可以在发布的错误消息的最后一行中找到此提示。

尝试将代码的这一行更改为空元素。

代码语言:javascript
复制
if (!isSnackbarVisible) return <></>;

null

代码语言:javascript
复制
if (!isSnackbarVisible) return null;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73329838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档