如何从反应中的动态选择下拉列表中清除所选值?

问题描述 投票:0回答:2

我已经实现了一种表单,其中选择下拉列表从服务器获取动态数据。

现在,当我从下拉列表中选择一个选项时,它会在字段中显示值,但是在保存表单或取消保存后,当我重新打开表单时,所选值不会从字段中清除。

需要采取什么措施来纠正它? 这是我的代码:

 class Task extends Component{
   constructor(props){
      super(props);
      this.state={
        SelectedName:'',
        TaskList:[],
       }
    }
  
 componentWillMount(){
 fetch(
 ...
   .then(responseJson => {
       let taskList=responseJson.data;
       let r = taskList.map(function(task){
            return {value: task.id, display: task.name}
          });
       this.setState({TaskList:r });
 }

//this is cancelForm fucntion
  cancelSave=()=>{
     this.setState({SelectedName:''});
   }

handleNameSelection=()=>{
 var row = this.state.TaskList.filter(function (item) {
            return item.value == event.target.value
         })
 this.setState({ SelectedName: row[0].display});
}

 render(){
   return(
    <Select
         defaultValue="placeholder-item"
         id="select-task-name"
         labelText="Select Task Name"
         value={this.state.SelectedName}
         onChange={(event) => this.handleNameSelection(event)}
       >
              {
                (this.state.TaskList.length > 0) ?
                  this.state.TaskList.map(function (list, idx) {
                    return <option key={idx}
                      value={list.value}>{list.display}</option>
                  })
                  :
                  <option />
              }
            </Select>

    );

  }
 }
javascript reactjs drop-down-menu
2个回答
0
投票

您应该在表单提交后清空状态中的任务数组列表

在这里我看不到你的提交功能(如果你使用上面的这个作为子组件,这是另一个要实现的逻辑,否则请参见下面的示例) 例如:

let onSubmit = (values) => {
   /* form submit stuff */

   this.setState({
      ...state,
      SelectedName:''
   });

}

0
投票
i am tray to clear dropdown selected value on Clear button click and i am apply id on dropdown.

 let data:any=(document.getElementById("dropdown-0"));
    if (data) {
      data.value = "";
    }
© www.soinside.com 2019 - 2024. All rights reserved.