【发布时间】:2021-05-15 13:39:37
【问题描述】:
我有一个带有 onClick 处理程序及其状态的 React 按钮组件 - 说明它是否在单击时打开。如果我在包装容器中呈现两个这样的组件,然后单击其中一个,两个按钮都会更新状态。我应该如何处理状态,以便在不使用 id 的情况下只更新一个按钮?
import React, {useState} from 'react';
const Button = (props) => {
const [open, setOpen] = useState(false);
const text = open ? 'Open' : 'Closed';
const toggleButton = () => { setOpen(!open) };
return (
<button onClick={toggleButton}>{text}</button>
)
}
// parent component
import React from 'react';
import Button from './Button'
const ButtonsWrapper = () => {
return (
<div>
<Button />
<Button />
</div>
)
}
我还尝试反转逻辑并将状态放入包装器组件中,然后将 onClick 处理程序作为道具传递给按钮,但情况相同。当其中一个被点击时,它们都会同时改变状态。
我正在使用 React Hooks。
【问题讨论】:
-
您能帮我们在codesandbox上重现您的问题吗?
-
请给我一些时间。
-
我看不出这段代码有什么问题。同意小提琴或其他东西会很好。
-
我再次检查,这段代码有效 - codepen.io/bakrall/pen/WNooMbR - 你是对的。非常感谢您的帮助!
标签: reactjs react-hooks