reactjs 类型“AccHeaderContextProps”上不存在属性“toggleExpand|未定义'. ts(2339)

yc0p9oo0  于 2023-02-15  发布在  React
关注(0)|答案(1)|浏览(123)

当我使用context来共享数据时,我从typescript中得到了一个类型错误Property 'toggleExpand' does not exist on type 'AccHeaderContextProps | undefined'.ts(2339)。但是所有的属性我都已经声明了。

interface AccHeaderContextProps {
  expand: boolean;
  toggleExpand: () => void;
}

const AccordionContext = createContext<AccHeaderContextProps | undefined>(
  undefined
);

当我使用它抛出错误:

function AccordionHeder(props: AccHeaderProps) {
  const { title } = props;
  const { expand, toggleExpand } = useContext(AccordionContext);//error
  return (
    <button onClick={toggleExpand}>
      {title} <span>{expand ? "-" : "+"}</span>
    </button>
  );
}

Live Demo

11dmarpk

11dmarpk1#

如错误所述,undefined没有toggleExpand的属性,因为它根本不存在,也不是对象。
您可以为上下文提供一个带有预期值的 initial 对象。

const AccordionContext = createContext<AccHeaderContextProps>({
  expand: false,
  toggleExpand: () => console.warn("No AccordionContext")
});

在呈现组件时,您将使用上下文并获取上下文提供器中定义的值。

相关问题