【发布时间】:2021-12-20 05:03:06
【问题描述】:
我有一个组件(它呈现一个列表元素)。单击该组件中的状态isActive 时,将设置为true。但我希望将其他组件 isActive 状态设置为 false。但我似乎无法弄清楚在与组件交互时如何设置不同组件的状态。
https://codesandbox.io/s/eloquent-elbakyan-5powe?file=/src/App.tsx
export const ListElement = () => {
const [isActive, setIsActive] = React.useState(false)
const handleClick = () => {
setIsActive(!isActive)
}
return (
<li
onClick={handleClick}
className={isActive ? 'active' : ''}
>
toggle between these elements
</li>
)
}
【问题讨论】:
-
将状态传达给共同的父母/祖先,后者反过来设置相关孩子/后代的状态。这在许多教程中都有概述,甚至反应文档本身react-cn.github.io/react/tips/…
-
我想过,但是如果我将一个 prop 传递给父元素(例如 UL 组件)并将所有子组件(列表元素)设置为 false。它还会将点击的元素设置为 false。
-
不确定你的意思,每个子元素都有一个 ID,当你得到一个事件说一个子项变为活动时,你将所有其他子项设置为非活动。您的列表项需要有一个输入道具将其设置为非活动状态,并需要一个回调以使其父项知道它已更改。肮脏的方法是将它们全部设置为非活动状态,然后将发送事件的顶部设置为活动状态。
标签: reactjs