【发布时间】:2020-02-05 01:59:54
【问题描述】:
我有一排按钮,希望在单击时将 Button 组件更改为“包含”,否则更改为“文本”。此外,当单击一个按钮时,其他按钮应恢复正常。我尝试将 onClick 处理程序添加到按钮组件并获取状态更改,但这非常令人困惑。由于我是 React 的新手,因此希望有代码 sn-p 来提供帮助。 下面是我尝试过的代码,但出现错误“TypeError: Unable to get property 'red' of undefined or null reference”:
import React, { useState } from "react";
import Button from "@material-ui/core/Button";
let initialState = {
red: false,
blue: false,
green: false
};
export default function Home() {
const [initialState, setState] = useState();
const handleClick = (name) => event => {
switch(name){
case 'Red': initialState.red = true; break;
case 'Blue': initialState.blue = true; break;
case 'Green': initialState.green = true; break;
default: break;
}
setState(initialState);
}
return (
<div className="Home">
<Button onClick={handleClick("Red")} variant={initialState.red ? "contained" : "text"}> Red </Button>
<Button onClick={handleClick("Blue")} variant={initialState.blue ? "contained" : "text"} > blue </Button>
<Button onClick={handleClick("Green")} variant={initialState.green ? "contained" : "text"} > green </Button>
</div>
);
}
【问题讨论】:
-
我认为你已经正确地实现了它。你也可以发布一些代码吗?
-
另外你确定要改变点击按钮的属性吗?或者您想更改按钮(不是道具)onClick 的背景?因为它可能会发生您更改按钮的道具只是为了更改按钮的背景外观
-
修改了问题以获取更多信息...
标签: reactjs button material-ui