Я пытаюсь использовать комбинированное поле extreact, и мне нужно выполнить некоторые действия, когда выбор будет изменен. Для этого необходимо использовать значение displayField, потому что значение valueField связано с идентификатором из БД, который в разных средах может отличаться. Из документации getRawValue должен сделать свое дело. Однако, когда я пытаюсь получить его в событии onChange, оно возвращает предыдущее значение displayValue, которое не ожидается. Я запустил простой тест в приложении fiddler (https://fiddle.sencha.com/#view / editor ) Сенчи с ExtReact 7.0.0, и вот код, который я использовал. Как я могу получить текущее значение displayValue? Я собирался получить магазин, а затем искать значение с помощью newValue, но кажется, что это должно просто работать вместо использования этого обходного пути.
import React, { Component } from 'react';
import { launch} from '@sencha/ext-react';
import { ExtReact } from '@sencha/ext-react';
import { Container, Panel, ComboBoxField } from '@sencha/ext-modern';
class App extends Component {
constructor(props) {
super(props);
const data = new Ext.data.Store ({
data: [
{label: '1st value', value: 1},
{label: '2nd value', value: 2}
],
})
this.state = {
storeData: data
}
}
handleOnChange(obj, newValue, oldValue, opts) {
console.log('obj.getRawValue', obj.getRawValue());
}
render() {
return (
<ExtReact>
<Container layout="fit" padding={10} fullscreen>
<Panel title="ExtReact" bodyPadding={10} shadow>
<ComboBoxField
label="Test CB"
displayField="label"
valueField="value"
placeholder="..."
onChange={this.handleOnChange.bind(this)}
store={this.state.storeData}
id="cboTest"
queryMode="local"
forceSelection={true}
/>
</Panel>
</Container>
</ExtReact>
)
}
}
launch(<App />);