需要在不使用 onChange 回调的情况下获取下拉菜单的值 - (material-ui reactjs)

IT技术 reactjs reactjs-flux react-jsx material-ui
2021-05-10 17:28:38

我正在使用 Material UI下拉组件并尝试仅在用户填写所有表单并提交表单时运行回调函数。在回调函数中,我打算收集所有表单字段并生成 url 来调用 api。

我的问题是我不能使用 onChange 作为#560 中所述的解决方案,因为我只想在用户单击提交按钮时收集所有详细信息。同样奇怪的是,目前,我能够获取所有其他表单元素的值,例如滑块、使用 material-ui 但只有下拉菜单似乎不起作用的文本字段。

我的回调函数:

handleFilter: function(event){
event.preventDefault();
var location = this.refs.location.getValue();
var posted_date = this.refs.posted_date.getValue();
var radius = this.refs.distance.getValue();
var salary = this.refs.salary.getValue();

    var jobtype = this.refs.jobtype.getValue();
    console.log(jobtype);       
}

在上面的函数中,“location、posted_date、radius、salary”返回值,但恰好是下拉列表的“jobtype”似乎没有返回任何值。它在控制台中返回此错误:“未捕获的类型错误:this.refs.jobtype.getValue 不是函数”

这是我的下拉组件:

<DropDownMenu menuItems={menuItems} ref="jobtype" />
1个回答

可能不是正确的方式,但我发现

console.log(this.refs.jobtype) (在我的情况下,jobtype 是下拉列表的 refs 值)

给出了以下结果。

R…s.c…s.Constructor {props: Object, context: Object, state: Object, refs: Object, _reactInternalInstance: ReactCompositeComponentWrapper}

在检查它时,我在“selectedIndex”属性中的状态对象内找到了有效载荷索引(所选项目的索引号)的值。我使用以下代码访问所选索引:

var jobtype = this.refs.jobtype.state.selectedIndex;  

如果有更好的方法来做到这一点,请提出建议。