reactjs - 在反应选择中排序
问题描述
我想知道是否可以让所有选定的选项出现在列表的顶部,然后按字母顺序对所有选定的选项进行排序?或者至少只是让它们出现在顶部。先感谢您。
解决方案
为了实现您的目标,您可以使用onChange
props 来重新排列您存储的选项,state
如下所示:
function compare(a, b) {
return a.label > b.label ? 1 : b.label > a.label ? -1 : 0;
}
class App extends Component {
constructor(props) {
super(props);
this.state = {
options: options
};
}
onChange = newOptions => {
// take original options and remove selected options
const stateOptions = options.filter(
option => !newOptions.find(op => op === option)
);
// sort the selected options
const orderedNewOptions = newOptions.sort(compare);
this.setState({
// concat the two arrays
options: orderedNewOptions.concat(stateOptions)
});
};
render() {
return (
<Select
isMulti
hideSelectedOptions={false}
options={this.state.options}
onChange={this.onChange}
/>
);
}
}
您需要使用hideSelectedOptions={false}
来防止隐藏选定的选项。
这里有一个活生生的例子。
推荐阅读
- javascript - Json 服务器:错误:插入失败,id 重复
- javascript - 如何使用java脚本隐藏文本并显示另一个文本和整个java脚本代码由php触发?
- keras - stateful=True 的多层 LSTM 网络
- laravel-5 - Laravel:优化 Mix/Webpack
- flutter - 颤振可以使用许多视频播放器控制器吗?
- python - 使用没有循环的 Pandas 获取坐标距离矩阵
- java - Java 将“Excel 日期序列号”转换为“日期时间”
- javascript - JavaScript中同时发生两个事件,单击事件处理程序未执行
- excel - 检测用户窗体中控件的更改
- regex - IF-Then_Else 中的 BASH 模式