javascript - 当我将它传递给功能组件时,为什么我的道具在最初存在后不再存在?
问题描述
这是我传递 onClick 道具的函数(setShowModal 是 setState() 来自 useState 钩子):
<MyFunctionalComponent
onClick={() => setShowModal(true)}
...other props here
/>
这是接收道具的功能组件:
export const MyFunctionalComponent = ({ onClick }) => {
return (
<section>
...other code here
{onClick && (<Button>{ctaText}</Button>)}
</section>
);
};
但是 Button 组件永远不会出现,因为属性 onClick 是未定义的。当我 console.log 功能组件内的道具时,它最初在控制台中打印该功能,但随后又打印了两次未定义。有人可以解释为什么会这样吗?我通过传播 ...props 来实现它。但是console.log 保持不变?我不明白为什么。这是我关于 Stack Overflow 的第一个问题,所以请随时给我反馈如何提出更好的问题 :)
解决方案
你不能通过 onClick,onClick 只是一个事件监听器。你应该通过状态
<MyFunctionalComponent onClick={() => setShowModal(!showModal)}
showModal={showModal}
...other props here />
/>
export const MyFunctionalComponent = ({ showModal }) => {
return (
<section>
...other code here
{showModal && (<Button>{ctaText}</Button>)}
</section>
);
};
我相信这应该有效。让我知道这是否是您想要的。
推荐阅读
- sql - SQL Server:升级后的数据库兼容性级别
- javascript - 将 .filter() 链接到函数中以加载本地 JSON 数据
- python - 如何注释 Django QuerySet 聚合带注释的子查询
- javascript - iframe 未在按钮单击时加载
- php - 如何使用外键自定义 Auth::user() 列?拉拉维尔
- assembly - 使用十六进制在汇编代码中编写指令
- javascript - 悬停时的下拉菜单
- maven - 在不创建插件的情况下构建自定义 Maven 生命周期
- java - SAX Parser 是否将所有数据保存在内存中?
- cmake - 更改为 CMake - 一个源,48 个 DLL