首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用react-final-form时无法访问向导窗体页中的赋值函数

使用react-final-form时无法访问向导窗体页中的赋值函数
EN

Stack Overflow用户
提问于 2019-03-23 05:46:46
回答 1查看 497关注 0票数 0

我正在尝试通过引用此代码https://codesandbox.io/s/km2n35kq3v来使用react-final-form创建向导窗体。对于我的用例,我需要在我的表单字段中使用一些赋值函数。这个例子演示了如何做到这一点-- https://codesandbox.io/s/kx8qv67nk5?from-embed。当我使用向导窗体而不是单页窗体时,我不确定如何在窗体步骤中访问赋值函数。

我试图通过修改Wizard.js呈现的<Form>组件来传入赋值器,从而将这两个示例结合起来。但是,我不能在向导窗体页中访问这些修改器。

在Wizard.js中

代码语言:javascript
复制
    return (
      <Form
        mutators={{
          // potentially other mutators could be merged here
          ...arrayMutators,
        }}
        render={({
          handleSubmit,
          submitting,
          values,
          pristine,
          invalid,
          form: {
            mutators: {push, pop, remove},
          },
        }) => {
          return (
            <form onSubmit={handleSubmit}>

另一个文件index.js

代码语言:javascript
复制
    <Wizard
      initialValues={{ employed: true, stooge: "larry" }}
      onSubmit={onSubmit}
    >
      <Wizard.Page>
        <FieldArray name="customers">
          {({ fields }) =>
            fields.map((name, index) => (
              <div key={name}>
                <label>Cust. #{index + 1}</label>

                <Field
                  name={`${name}.firstName`}
                  component="input"
                  placeholder="First Name"
                />
                <span
                  onClick={() => fields.remove(index)}
                  style={{ cursor: "pointer" }}
                >
                  ❌
                </span>
              </div>
            ))
          }
        </FieldArray>
      </Wizard.Page>
</Wizard>

It错误输出-在index.js中未定义remove

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-25 03:19:18

看看这个工作示例:https://codesandbox.io/s/znzlqvzvnx

我所做的更改:

Wizard.js

代码语言:javascript
复制
     static Page = ({ children, mutators }) => {
        if(typeof children === 'function'){
          return children(mutators);
        }

        return children;
      };

     ...

     <form onSubmit={handleSubmit}>
       {
          // activePage
          <activePage.type {...activePage.props} mutators={mutators} />
       }

     ...

index.js (仅第一个<Wizard.page>)

代码语言:javascript
复制
      <Wizard.Page>
        {
          ({ upper }) => (
            <React.Fragment>
              <div>
                <label>First Name</label>
                <Field
                  name="firstName"
                  component="input"

                  ...

              </div>
            </React.Fragment>
          )
        }        
      </Wizard.Page>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55308215

复制
相关文章

相似问题

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