我已经实现了一种表单,其中选择下拉列表从服务器获取动态数据。
现在,当我从下拉列表中选择一个选项时,它会在字段中显示值,但是在保存表单或取消保存后,当我重新打开表单时,所选值不会从字段中清除。
需要采取什么措施来纠正它? 这是我的代码:
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:''
});
}
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 = "";
}