reactjs - 传入新道具时重置反应选择下拉菜单
问题描述
我想清除获取新道具下拉列表中的值。目前,即使我展开下拉列表,以前的值仍然可见,我可以看到新值。
import React from 'react';
import Select from 'react-select';
import axios from 'axios';
class KeydateDropdown extends React.Component {
constructor(props) {
super(props);
this.state = {
optionList: []
};
};
componentDidUpdate(prevProps) {
let vesselname = this.props.vesselname;
if (prevProps.vesselname !== vesselname) {
let keydateList = [];
this.setState({
optionList: keydateList
});
axios.get('list-keydates', {
params: {
vesselname: vesselname
}
})
.then((response) => {
let data = response.data['intervention'];
data.forEach((element) => {
keydateList.push({ value: element, label: element });
});
this.setState({ optionList: keydateList });
})
}
}
render() {
return (
<Select
isDisabled={this.props.isDisabled}
onChange={this.props.handleKeydateChange}
options={this.state.optionList}
className={styles.dropdown}
/>
);
}
}
export default KeydateDropdown;
我已经确认第一个清除 呼叫的setState()
内部componentDidUpdate
optionList
render()
编辑:这是代码框
解决方案
Select
您忘记在组件上显式设置值。您必须传递this.state.selectedKeydate
到KeydateDropdown
inMainInputBar
然后将该值传递给Select
组件:
在MainInputBar.jsx
:
keydateDropdown = (
<KeydateDropdown
vesselname={this.state.selectedVessel.value}
selectedKeydate={this.state.selectedKeydate}
handleKeydateChange={this.handleKeydateChange}
value={this.state.selectedKeydate}
/>
);
在KeyStateDropdown.jsx
:
<Select
isDisabled={this.props.isDisabled}
onChange={this.props.handleKeydateChange}
options={this.state.optionList}
className={styles.dropdown}
value={this.props.value}
/>
我将您的沙箱分叉并在此处修复:https ://codesandbox.io/s/happy-einstein-55klv
推荐阅读
- css - CSS背景颜色在Safari中不起作用
- python - 如何在 Python 中调用函数内部的函数
- android - 暂停开放测试后,我的应用的 Google Play 评论是否会公开显示?
- discord - 向服务器的所有成员添加角色的代码
- statistics - 我想知道我所做的统计分析是否有意义
- elasticsearch - 在弹性搜索上不起作用的术语
- android - 未处理的异常:键入“列表”
' 不是 'String' 类型的子类型 无法获取 json 数据 - swift - 视图中的 AVFoundation 摄像头
- azure - Azure 与服务总线主题的集成
- clojure - cider-connect-clj 无法连接到 nrepl.server/start-server