next.js 预呈现期间未定义从父级传递的子级中的回调函数

disho6za  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(137)

运行npm run build时,我得到以下错误:
错误:您为Dialog提供了一个onClose属性,但该值不是函数。收到:未定义的
这是因为在预渲染/构建期间,父级和子级之间没有依赖关系(可能是由于我的实现?),所以回调函数在那时是未定义的。我该如何告诉编译器这种依赖关系?或者摆脱这种错误?

//Parent
const Parent = () => {
  const [isOpen, SetIsOpen] = useState(false);
  return (
    <input
      onClick = setIsOpen(true)
    >Click <input />
    {isOpen && <Child callback={() => setOpen(false}}
  )
}

//Child
const Child = ({callback}) => {
  <Modal
    onClose={callback}
  >
  ...
   <Modal />
}

//Modal
const Modal ({onClose, ...}) => {
  return (
    <Transition.Root>
      <Dialog
        onClose={onClose}
        ...
        >
        ...
        <Dialog />
     <Transition.Root />
  )
}
vjhs03f7

vjhs03f71#

原来组件文件在项目目录下,Next.js不允许我们从那里导出组件,所以这不是代码问题。

相关问题