首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加反应-电话号码输入-反应-反应-最终形式?

如何添加反应-电话号码输入-反应-反应-最终形式?
EN

Stack Overflow用户
提问于 2019-04-15 10:37:32
回答 1查看 3.3K关注 0票数 3

我目前正在使用react-final-form创建一个表单,并试图通过集成作为适配器使用react-phone-number-input,就像通过这个例子显示的那样。

我试图使用这个示例来了解它是如何完成的,但我不确定如何访问组件并正确地为其创建适配器。

代码语言:javascript
复制
import React from 'react';
import { Form, Field } from 'react-final-form';
import PhoneInput from 'react-phone-number-input';

const sleep = ms => new Promise(resolve => setTimeout(resolve, ms))

const onSubmit = async values => {
  await sleep(300)
  window.alert(JSON.stringify(values, 0, 2))
}

const PhoneAdapter = ({ input, meta, ...rest }) => (
    <PhoneInput
    {...input}
    {...rest}
    value={input.value}
    onChange={(event, value) => input.onChange(value)}
  />
  )

class ContactForm extends React.Component {
    render() {
        return (
            <>
            <Form
              onSubmit={onSubmit}
              initialValues={{ }}
              render={({ handleSubmit, form, submitting, pristine, values }) => (
                <form onSubmit={handleSubmit}>
                  <fieldset>
                  <Field component={PhoneAdapter} />
                  </fieldset>
                  <fieldset>
                    <button type="submit" disabled={submitting || pristine}>
                      Submit
                    </button>
                  </fieldset>
                  <pre>{JSON.stringify(values, 0, 2)}</pre>
                </form>
              )}
            />
            </>
        );
    }
}

export default ContactForm;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-15 11:37:40

最新情况:2019年7月

显然,您所需要做的就是扩展字段的输入属性。效果完美无瑕。学习传播,如果你不熟悉它。

代码语言:javascript
复制
const PhoneAdapter = ({ input }) => (
    <PhoneInput {...input} />
)

<Field name="phone" placeholder="Enter phone number" component={PhoneAdapter} />

最后,我用FieldRenderProps道具做了实验,直到它成功。我不太确定它是否能工作,因为react-phone-number-input是组件中的两个元素。我以为它只会在其中一个元素上实现输入。

通过使用input,我可以访问输入的道具。因此,我调用了它的值,因为默认值如下所示:

代码语言:javascript
复制
<PhoneInput
  placeholder="Enter phone number"
  value={ this.state.value } // This is what I called.
  onChange={ value => this.setState({ value }) }/>

然后,我对onChange函数支柱也做了同样的操作。

代码语言:javascript
复制
const PhoneAdapter = ({ input }) => (
    <PhoneInput value={input.value.value} onChange={value => input.onChange(value)} />
)

最后,我使用了如下组件适配器:

代码语言:javascript
复制
<Field name="phone" placeholder="Enter phone number" component={PhoneAdapter} />
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55687357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档