javascript - 如何从反应中的动态选择下拉列表中清除所选值?
问题描述
我已经实现了一个表单,其中 Select 下拉菜单从服务器获取动态数据。
现在,当我从下拉列表中选择一个选项时,它会在字段中显示值,但是在保存表单或取消保存后,当我重新打开表单时,所选值不会从字段中清除。
需要做什么来纠正它?这是我的代码:
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>
);
}
}
解决方案
提交表单后,您应该清空状态中的任务列表
在这里我看不到您的提交功能(如果您在上面使用它作为子组件,这是另一个实现的逻辑,否则请参见下面的示例)作为示例:
let onSubmit = (values) => {
/* form submit stuff */
this.setState({
...state,
SelectedName:''
});
}
推荐阅读
- ruby-on-rails - 带有 ActiveSupport::Notifications 的 ActionCable 广播
- c++ - c++: 做static_cast
std::sqrt(x) 总是给出平方正整数的精确结果? - r - 如何使用 tidyverse 从测试结果中计算百分比分数?
- javascript - 分页(Startafter)在firestore和Angular 9 App中不起作用
- javascript - Google Apps 脚本模式窗口 HTML - 链接的 href 问题
- android - Facebook Android SDK 图形 API 版本
- java - 如何找到 YearMonth 等于或在当前月份之后?
- python - 系统用户无法访问 python 包
- office-js - 如何让我的 Excel 加载项在文档打开时执行一个函数?
- javascript - 如何使用 Math.random() 仅生成十分位的数字?