在ExtReact 6.6.0中从FormPanel获取值

时间:2018-10-24 21:52:03

标签: javascript extjs extreact

如何使用ext-react 6.6.0从FormPanel获取值?

根据API documentation,我应该使用getValues函数,该函数在6.5.1中有效,但在6.6.0中出现错误_this.form.getValues is not a function

代码

在6.5.1中工作:https://fiddle.sencha.com/?extreact#view/editor&fiddle/2n05

在6.6.0中失败(请参见控制台以获取错误):https://fiddle.sencha.com/?extreact#view/editor&fiddle/2n04

1 个答案:

答案 0 :(得分:2)

  

我收到错误_this.form.getValues不是6.6.0中的函数

原因ref={form => this.form = form}。在 extreact-6.6.0 中,表单变量不完全是formpanel。因此,为此您需要访问

ref={form => this.form = (this.form || form.cmp)}}

使用button.up('formpanel')获取formpanel组件的另一种方法。此按钮是您的handler的第一个参数。

button.up('formpanel').getValues()

您可以在这里使用fiddle进行检查。

代码段

import React, { Component } from 'react';
import {launch} from '@sencha/ext-react';
import { ExtReact } from '@sencha/ext-react';
import { Container, Label, FormPanel, TextField, Button } from '@sencha/ext-modern';

class App extends Component {

    state = {
        values:JSON.stringify({
            fname: 'null',
            lname: 'null'
        })
    }

    submit = (btn) => {
        const values = btn.up('formpanel').getValues();

        console.log('Values using up selector',values);

        console.log('Values using up ref',this.form.getValues());

        this.setState({values:JSON.stringify(this.form.getValues())});
    }

    render() {
        return (
            <Container defaults={{ margin: 10, shadow: true }}>
                <FormPanel title="Form" ref={form => this.form = (this.form || form.cmp)}>
                    <TextField name="fname" label="First Name"/>
                    <TextField name="lname" label="Last Name"/>
                    <Button handler={this.submit} text="Submit"/>
                </FormPanel>

                <Label padding={'10'} html={this.state.values} />
            </Container>
        )
    }
}

launch(<ExtReact><App /></ExtReact>);