Reactjs 物料界面选择-物料界面选择组件中的选定项显示为空

Reactjs 物料界面选择-物料界面选择组件中的选定项显示为空,reactjs,material-ui,Reactjs,Material Ui,我在点击按钮时显示一个表单,作为表单的一部分,我已经实现了MaterialUI选择项。 我已经在子组件中包含了所有这些代码,并且onchange处理程序函数在父组件中。 Ui和on change处理程序工作正常,但问题是select组件未显示所选菜单项标签。 如果我保留选项而不是MenuItem,它将起作用 这里是沙盒链接 您设置的状态不正确: this.setState({ [event.target.name]: event.target.value }); 但根据您的状态结构,

我在点击按钮时显示一个表单,作为表单的一部分,我已经实现了MaterialUI选择项。 我已经在子组件中包含了所有这些代码,并且onchange处理程序函数在父组件中。 Ui和on change处理程序工作正常,但问题是select组件未显示所选菜单项标签。 如果我保留选项而不是MenuItem,它将起作用

这里是沙盒链接
您设置的状态不正确:

this.setState({
    [event.target.name]: event.target.value 
});
但根据您的状态结构,您应该将名称值对象包装到serviceRequest中:


您的沙盒链接未编译?@G\S正在运行。我刚试过隐姓埋名的模式,现在也可以了。让我检查一下。您的更改处理程序是一个闭包
handleSelectChange=event=>name=>{
也就是说,它不是一个函数,而是一个返回另一个函数的函数。当您更改输入时,
设置状态
永远不会被调用。@UtsavPatel这是真的。我现在修改了代码,但在HomeComponent中将选择值设置更改为value={props.values}。然后在index.js中将值更改为:
render(){const{serviceRequest:{selectedService:value}}}=this.state;return();}
在以前的代码中,当您编写
const selectedService={serviceRequest}
selectedService将是一个对象
{selectedRequest}
}。这里不需要花括号。沙盒没有新的更改:(
const selectedService=serviceRequest;const values=selectedService;
只需删除花括号。这里不需要花括号,因为创建对象是ES6语法
const b='123';const a={b}
将a创建为具有“b”属性和b变量值的对象:
a={b:'123'
}我创建了一个带有修复程序的新沙盒,请检查它
this.setState({ 
     serviceRequest: {
         [event.target.name]: event.target.value }
      }
);