【问题标题】:How to clear selected value from dynamic select dropdown in react?如何从反应中的动态选择下拉列表中清除所选值?
【发布时间】:2020-11-26 19:13:52
【问题描述】:

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

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

需要做什么来纠正它? 这是我的代码:

 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


    【解决方案1】:

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

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

    let onSubmit = (values) => {
       /* form submit stuff */
    
       this.setState({
          ...state,
          SelectedName:''
       });
    
    }
    

    【讨论】:

    • 但是@Sadhil,通过执行 TaskList:[] ,选项将从下拉列表中删除,因为我已将服务器数据放入 TaskList 的 willComponentMount() 方法中。每当我再次打开表单时,我只需要从字段中清除选定的输入。
    • @unak okey 误解了这个问题,尝试更新,如果再次不起作用,请告诉我您正在使用的选择组件(FrameWork)
    • 你在使用 bootstrap Select 吗?
    猜你喜欢
    • 2022-07-15
    • 2012-08-12
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多