我正在渲染包含按钮的对象数组中的一些数据。我从最初设置为**“选择”的状态追加按钮文本。我想要的是,当我点击任何按钮时,它的值应该更新为“选定**”。目前,当我单击任何按钮时,所有按钮值都会更新。
const TestPage = () =>{
let buttons = [
{name:'Select1', id:1},
{name:'Select2', id:2},
{name:'Select3', id:3}
]
const [btnText, setbtnText] = useState('Select')
const handleClick = () =>{
setbtnText('Selected')
}
return(
<div>
{!!buttons && buttons.map(item =>{
return(
<p key={item.id}>
<Button btnType='button' btnText={btnText} clickHandler={handleClick} />
</p>
)
})}
</div>
)
}
export default TestPage;
1条答案
按热度按时间zujrkrfu1#
每个按钮都需要有自己的状态。当您在多个按钮之间共享一个变量时,如果任何处理程序更改了单个变量,则所有操作都将发生变化。
另一种方法是将
id
传递给点击处理程序,并使用const i = buttons.findIndex(btn => btn.id === id)
来确定应该更改哪个按钮的名称。