typescript - isMulti={true}时如何设置react-select组件状态?
问题描述
这是我的代码的一部分:
我使用的表:
const options = [
{ value: 'Orange', label: 'Orange' },
{ value: 'Banana', label: 'Banana' },
{ value: 'Apple', label: 'Apple' },
];
我创建状态“值”,它是一个初始状态为空表的表:值:[]。
private handleChange(value: any) {
this.setState({ value: value });
}
<Select
value={this.props.selection}
onChange={() => this.handleChange.bind(this)}
options={options}
isClearable={true}
isMulti={true}
/>
{this.props.selection} 是以下类的类型:
export class Selection {
value: string;
label: string;
constructor(
value: string,
label: string,
) {
this.value = value;
this.label = label;
}
}
当我从 Select 组件中选择选项时,“值”状态不会改变。你知道我做错了什么吗?
解决方案
onChange={() => this.handleChange.bind(this)}
每次更改 Select 中的值时,您分配给的回调
实际上并没有做任何事情。它唯一要做的就是绑定this
到handleChange。它不会调用该函数。
传递已经是函数的绑定结果就足够了。
onChange={this.handleChange.bind(this)}
想想这个
function sum(a,b){
return a+b;
}
const sumWithNoArgs = () => sum.bind(null, 1,2);
如果我们现在调用 sumWithNoArgs() 我们将得到一个新函数而不是 sum。这正是 select 所做的,它调用您传递的函数。
你所要做的
const sumWithNoArgs = () => sum.bind(null, 1,2)();
所以我们调用 SumWithNoArgs() 我们得到了正确的结果。
您需要在构造函数中绑定函数或将函数声明为类变量,以便它自动绑定到您的类。
推荐阅读
- c# - Perforce API (P4API.NET): P4Exception: Too many try to get lock p4tickets.txt.lck
- python - 如何为 CNN 训练准备通道图像?
- android-studio - 如何为在Android中分配了多个角色的用户实现登录?
- javascript - 如何创建离线工作的网络应用程序?(例如,bulkresizephoto)
- javascript - 直接从相机上传图像到谷歌云存储
- java - 双向 jpa 休眠关系 @OneToMany @ManyToOne 失败,因为未存储父 ID
- bash - 签名错误阻止上传到 S3 存储桶
- python-3.x - TensorFlow 1.15 中的 Autograph 在条件语句中给出 TypeError,在一个分支中赋值
- c# - Update() 和 FixedUpdate() 之间有什么区别,应该如何将这些区别应用于控制运动?
- javascript - 如何禁用滚动功能?