reactjs - 如果条件为真,则在子组件中调用函数
问题描述
只有当某个变量为真时,我才想在子组件中调用函数。否则什么都不做
allowDeleteItem = false;
<ChildComponent
....
removeItemFn={ deleteFn } />
我试图在花括号内添加我的布尔变量并执行类似的条件,{ allowDeleteItem && deleteFn }
但我有一个打字稿错误,我很难解决这个问题。
另一种方法是将布尔变量作为道具传递给子组件并在那里进行验证。这种情况我可以解决,但我正在寻找一种可能的“更清洁”的方式
解决方案
我的猜测是您可能收到的错误是因为您尝试有条件地将函数引用发送给子道具,可能是这样的removeItemFn={allowDeleteItem && deleteFn}
?这可能是有问题的,因为如果不满足条件,您将发送一个“未定义”值,这可能会破坏可能依赖子道具中该值的逻辑。
我对您的项目了解不够,所以我将列出一种可能性:
你可以选择使用React Context API。. 如果deleteFn
函数和allowDeleteItem
布尔值从父组件传递到许多子组件,您可以通过创建上下文并将每个子组件设置为上下文使用者来避免将它们作为每个组件的道具传递。父级将充当上下文提供者。这样,在子组件中,您只需调用 useContext() 挂钩即可访问这些值。
allowDeleteItem
否则,将布尔值作为另一个道具发送会更容易。尽管一开始它可能看起来并不干净,但稍后您可能会发现这是最简单的方法,或者还有另一种压缩代码的方法。根据我的经验,最好先让功能正常工作,然后再清理代码。
推荐阅读
- swift - 即使在使用“准备”之后,ARKit 添加节点也会导致丢帧
- python - 如果值中的搜索项(值是列表),则获取 dict 的键
- solr - Solr Suggestor 的 DSE CQL 查询
- c - 在客户端和服务器上使用 UDP 套接字的封装和辅助功能
- java - 单击适配器类中的国家/地区选择器时,java.lang.ClassCastException 崩溃:
- matlab - 保存的 Matlab 电影文件只播放最后一帧
- php - 注意:尝试获取非对象的属性...我想从返回状态为NULL的表中获取未归还书籍的数量
- twig - 如何在没有视图的情况下在 Twig Drupal 8 中显示列表内容
- c++ - 在 C++ 中重载显式构造函数
- github-desktop - 使用芬兰语/瑞典语键盘布局在 GitHub Desktop 中“在 Git Bash 中打开”的键盘快捷键