网站搜索

reactjs - ChakraUI 提示的 React.useRef


我无法弄清楚在以下来自 Chakra 文档的示例代码中,我需要为 React.useRef() 提供什么类型:

function UpdatingToastExample() {
  const toast = useToast()
  const toastIdRef = React.useRef()

  function update() {
    if (toastIdRef.current) {
      toast.update(toastIdRef.current, { description: "new text" })
    }
  }

  function addToast() {
    toastIdRef.current = toast({ description: "some text" })
  }

  return (
    <Stack isInline spacing={2}>
      <Button onClick={addToast} type="button">
        Toast
      </Button>

      <Button onClick={update} type="button" variant="outline">
        Update last toast
      </Button>
    </Stack>
  )
}

来自: https://chakra-ui.com/docs/feedback/toast#updating-toasts

Typescript 显然希望我为 React.useRef() 提供一个类型,但我不知道该给它什么类型?

 const toastIdRef = React.useRef<WhatTypeShouldThisBe?>(null);

我正在使用 chakra-ui/react v1.6.7 和 typescript 4.2.4。

答案#1

看起来它要么是字符串,要么是数字:

const toastIdRef = React.useRef<number|string>(null);

看起来你可以导入 ToastId 类型:

吐司道具

ToastId 类型

export type ToastId = string | number
import { useToast, ToastId } from "@chakra-ui/toast";

...

const toastIdRef = React.useRef<ToastId>(null);