我正在尝试调度组件的 onSelect 操作以填充另一个下拉列表。我已经使用 onSelect 事件处理程序而不是 antd 的 onFieldsChange 选项来实现这一点,因为我需要使用在 onFieldsChange 回调范围内不可用的局部变量。
但结果是 - 在调用调度并重新渲染组件后,下拉元素被清除其选定值,并重置为其初始值。我无法保留选择。以下是代码片段 -
<FormItem {...formItemLayout} label={item.label}>
{getFieldDecorator(item.id, {
rules: [
{ required: required, message: errorText },
],
initialValue: initVal,
trigger: 'onSelect',
})(
<Select style={{ width: '100%' }} onSelect={self.handleChange.bind(self,item)}>
{ options }
</Select>
)}
</FormItem>
这是 onSelect 的 handleChange 回调 -
public handleChange(item, val) {
console.log(item);
console.log('Current Value: ' + val);
let url = item.hasOwnProperty('urlOnSelect') ? item.urlOnSelect : null;
if (!url) {
return;
}
let params = item.hasOwnProperty('queryParams_S') ? item.queryParams_S : null;
let value;
if (params) {
url = url + '?';
params.map(function(param) {
value = val;
if (url.indexOf('?') !== (url.length - 1)) {
url = url + '&';
}
url = url + param.paramName + '=' + value;
});
}
let fieldsToPopulateOnSelect = item.hasOwnProperty('fieldsToPopulateOnSelect') ? item.fieldsToPopulateOnSelect : null;
this.props.dispatch(fetchUrlOnSelect(this.profileKey, url, fieldsToPopulateOnSelect));
this.props.form.setFields({
[item.id]: {
value: val,
},
});
}
注意:如上所示,我什至尝试使用 setFields 属性来设置调度后的值!但是下拉组件仍然在重新渲染时被清除!
请帮忙!!!!:|