从材质中获取值 - 在React中使用按钮

时间:2018-05-18 14:54:13

标签: javascript reactjs material-ui formik

我有这个功能

handleChangeButton = (e) => {
    alert(e.target.value)
    this.props.setFieldValue('degreeLevel', e.target.value);
  }

在我的组件渲染中,我有

<div className="twelve columns">
            <p>Degree Level</p>
            <Button
              variant="raised"
              label="Default"
              onClick = { this.handleChangeButton }
              value="Doctorate"
            >
              Doctorate
            </Button>

            <Button variant="raised" label="Default">
              Masters
            </Button>

            <Button variant="raised" label="Default">
              Undergraduate
            </Button>
          </div>

所以,我想要做的是,当我点击Doctorate按钮时,它应this.props.setFieldValuedegreeLevel,这是Formik形式中的一个字段。当我点击该按钮时,该提醒会向我显示undefined,这意味着它没有读取值Doctorate

如何让e.target.value读取按钮的值?

2 个答案:

答案 0 :(得分:6)

使用currentTarget代替target

handleChangeButton = (e) => {
    alert(e.currentTarget.value)
    this.props.setFieldValue('degreeLevel', e.currentTarget.value);
}

答案 1 :(得分:0)

@yugantarkumar @monsto,这不是 Material UI 特有的东西,而是在 JS 中使用事件冒泡来完成的。您可以在此处阅读有关差异的更多信息:http://www.qc4blog.com/?p=650

currentTarget 指的是事件侦听器所附加到的元素,而 target 表示与之交互的元素。 在 MUI 中,此问题是由点击 MuiButton-label 组件而不是 MuiButtonBase 组件引起的。