【发布时间】:2021-07-06 13:51:45
【问题描述】:
我想要做的是,当单击按钮时,在 onclick 时它的变体(材质 ui 按钮应该从轮廓变为包含)或者只是它的背景应该改变。 (请不要建议使用 onFocus 属性,因为这是另一个组件中的另一个按钮,单击该按钮时会丢失焦点。所以 onFocus 不是我的选择)。我在这里附上我的方法,你可以改变它(因为我的无论如何都不起作用,它会无限期地改变状态为真)
const [clicked, setClicked] = useState(false);
const categoryChangedHandler = (e) => {
setCategory(e);
};
{categories.map((category, index) => {
console.log("catogoried.map called and categories= " + category);
return <Button className="CategoryButton"
variant={clicked ? "contained" : "outlined"}
color="primary"
value={category}
onClick={() => {
categoryChangedHandler(category);
setClicked(true);
}}
style={{ textAlign: 'center' }}
>
{category}
</Button>
})
}
【问题讨论】:
-
你想要的是this吗?顺便说一句,您在问题中的代码应该可以在不更改任何内容的情况下工作。
-
onClick={() => { categoryChangedHandler(category); setClicked(true) }}首先你应该这样写,其次你想达到什么目的? -
No @NearHuscarl,我在这里提到的代码是为每个被映射的按钮设置 setClicked(true) (从列表中映射的按钮超过 10 个)。我想更改我点击的按钮的变体/背景颜色(onClick),因为其余按钮的点击状态应该是假的,不应该对它们进行任何更改。
标签: javascript reactjs react-hooks material-ui materialbutton