为什么 Material-UI 按钮的值没有传递给 onClick 事件处理程序?

时间:2021-04-10 17:17:49

标签: reactjs onclick material-ui buttonclick

我试图在点击 Material-UI 按钮时将值传递给它的点击处理程序,但它总是显示 valueundefined。早些时候,当我使用一个简单的按钮时,我得到了 value,但之后却没有。

const categoryChangedHandler = (e) => {
        console.log("category choosed ========= " + e.target.value);
        setCategory(e.target.value);

    };
<Button className="CategoryButton" variant="outlined" color="primary"
                                value={category}
                                onClick={e => categoryChangedHandler(e)}
                                style={{ textAlign: 'center' }}
                            >
                                {category}
                            </Button>

我得到了结果:

category choosed ========= undefined

1 个答案:

答案 0 :(得分:1)

您需要使用 event.currentTarget.value 而不是 event.target.value

Material-UI Button 的文本位于 <span> 元素内的 <button> 内。当您点击文本时,event.target 将引用 span 元素;而 event.currentTarget 将引用附加了事件处理程序的元素(即按钮元素),点击事件冒泡到该元素。

这是一个简单的工作示例:

import Button from "@material-ui/core/Button";

export default function App() {
  return (
    <Button value="hello" onClick={(e) => console.log(e.currentTarget.value)}>
      Hello World
    </Button>
  );
}

Edit Button currentTarget

相关答案:

文档:

相关问题