react:如何将一个组件设置为“活动”状态,一次一个,并在单击时从所有其他组件中删除“活动”状态?

eimct9ow  于 2021-09-13  发布在  Java
关注(0)|答案(1)|浏览(391)

我想在单击时将特定组件设置为活动组件,并在单击其他组件时更新活动组件。目前,这两个组件都处于活动状态。我想从以前单击的组件中删除活动状态。

const [activeComponent, setActiveComponent] = useState(null);

  const updateActiveComponent = (e, active_component) => {
    if (active_component.id != activeComponent?.id) {
      setActiveComponent(active_component);
    } else {
      closeActiveComponent();
    }
  };
  const closeActiveComponent = () => {
    setActiveComponent(null);
  };
<MyComponent
        key={index}
        card={card}
        clickHandler={updateActiveComponent}
      />
lstz6jyr

lstz6jyr1#

这里的问题是您总是将活动组件设置为 null 无论何时单击其中任何一个。
如果想改变怎么办 MyComponent 根据它是否处于活动状态进行渲染,您需要向它传递一个道具来告诉它,例如。

<MyComponent
  key={index}
  card={card}
  clickHandler={updateActiveComponent}
  isActive={activeComponent === component.id}
/>

不知道是什么 MyComponent 看起来很难给出更多的指导-如果您需要更多的解释,请随意分享更多的代码。

相关问题