运行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 />
)
}
1条答案
按热度按时间vjhs03f71#
原来组件文件在项目目录下,Next.js不允许我们从那里导出组件,所以这不是代码问题。