ExtReact ComboBoxField getRawValue - PullRequest
       24

ExtReact ComboBoxField getRawValue

0 голосов
/ 05 февраля 2020

Я пытаюсь использовать комбинированное поле 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 />);
...