Reactjs 如果条件为true,则调用子组件中的函数

Reactjs 如果条件为true,则调用子组件中的函数,reactjs,typescript,Reactjs,Typescript,我只想在某个变量为true时调用子组件中的函数。否则什么也不做 allowDeleteItem = false; <ChildComponent .... removeItemFn={ deleteFn } /> allowDeleteItem=false; 我试图在花括号中添加布尔变量,并执行类似于{allowdeletietem&&deleteFn}的条件,但我遇到了一个类型脚本错误,我很难解决这个问题 另一种方法是将布尔变量作为道具传递给子组件,然后进行验证。这种情况我可

我只想在某个变量为true时调用子组件中的函数。否则什么也不做

allowDeleteItem = false;

<ChildComponent
....
removeItemFn={ deleteFn } />
allowDeleteItem=false;
我试图在花括号中添加布尔变量,并执行类似于
{allowdeletietem&&deleteFn}
的条件,但我遇到了一个类型脚本错误,我很难解决这个问题


另一种方法是将布尔变量作为道具传递给子组件,然后进行验证。这种情况我可以解决,但我正在寻找一种可能的“更干净”的方法

我猜您可能收到的错误是因为您试图有条件地将函数引用发送给子属性,可能是这样的
removietemfn={allowdeletietem&&deleteFn}
?这可能会有问题,因为如果不满足条件,则发送的值为“undefined”,这可能会破坏可能依赖于子属性中该值的逻辑

我对您的项目了解不够,因此我将列出一种可能性:

您可以选择使用。如果将
deleteFn
函数和
allowdeletItem
布尔值从父组件向下传递到多个子组件,则可以通过创建上下文并将每个子组件设置为上下文使用者来避免将它们作为每个组件的道具传递。父级将充当上下文提供程序。这样,在子组件中,您只需调用useContext()钩子即可访问这些值


否则,将
allowdeletItem
boolean作为另一个道具发送就更容易了。尽管一开始它可能看起来不干净,但稍后您可能会发现它是最简单的方法,或者有另一种压缩代码的方法。根据我的经验,最好先让功能正常工作,然后再清理代码。

我猜您可能收到的错误是因为您试图有条件地将函数引用发送给子属性,可能是这样的
removietemfn={allowdeletietem&&deleteFn}
?这可能会有问题,因为如果不满足条件,则发送的值为“undefined”,这可能会破坏可能依赖于子属性中该值的逻辑

我对您的项目了解不够,因此我将列出一种可能性:

您可以选择使用。如果将
deleteFn
函数和
allowdeletItem
布尔值从父组件向下传递到多个子组件,则可以通过创建上下文并将每个子组件设置为上下文使用者来避免将它们作为每个组件的道具传递。父级将充当上下文提供程序。这样,在子组件中,您只需调用useContext()钩子即可访问这些值


否则,将
allowdeletItem
boolean作为另一个道具发送就更容易了。尽管一开始它可能看起来不干净,但稍后您可能会发现它是最简单的方法,或者有另一种压缩代码的方法。根据我的经验,最好先让功能正常工作,然后再清理代码。

可能您可以尝试以下方法:

allowDeleteItem = false;

<ChildComponent
....
removeItemFn={ allowDeleteItem?deleteFn:undefined } />

也许你可以试试这样的东西:

allowDeleteItem = false;

<ChildComponent
....
removeItemFn={ allowDeleteItem?deleteFn:undefined } />