javascript - 如何在react-final-form中传递null作为字段的初始值?

标签 javascript forms reactjs react-final-form

我在 react-final-form 中使用的自定义 React 组件<Field>具有值 prop 为 int? 。它的值可以是整数或空。但是当我设置 null使用 initialValues 来设置此字段组件值的初始值<Form>的支柱组件,react-final-form转换null为空字符串 '' .

我知道我可以通过创建一个检查 '' 的包装器组件来轻松解决这个问题。并将其转换为null ,但是还有其他更干净的方法来解决这个问题吗?或者这是一个库错误?

https://codesandbox.io/s/yq00zxn271

import React from "react";
import { render } from "react-dom";
import { Form, Field } from "react-final-form";

const IntField = (props) => (
  <span>
    <input type="text" value={props.value === null ? 0 : props.value} />
    <pre>
      <b>props.{props.name} === null</b> : {(initialValues[props.name] === null).toString()}
      <br />
      <b>props.value === null</b> : {((isNull) => (<span style={{ color: isNull ? 'green' : 'red' }}>{isNull.toString()}</span>))(props.value === null)}
      <br />
      <b>props: </b>{JSON.stringify(props)}
      <br />
      <b>initialValues: </b>{JSON.stringify(initialValues)}
    </pre>
  </span>
)

const onSubmit = values => {
  console.log('submitted')
}

const initialValues = { someInteger: null };

const App = () => (
    <Form
      initialValues={initialValues}
      onSubmit={onSubmit}
      render={() => (
        <form>
          <label>Some Integer:</label>&nbsp;
          <Field name="someInteger">
            {({ input, meta }) => (
              <IntField {...input} />
            )}
          </Field>
        </form>
      )}
    />
);

render(<App />, document.getElementById("root"));

最佳答案

您可以使用<Field>支柱allowNull?关闭此行为,以便将空值按原样传递给子组件。

像这样:

<Field name="someInteger1" allowNull={true}>
  {({ input, meta }) => (
    <IntField {...input} />
  )}
</Field>

https://codesandbox.io/s/n4rl2j5n04

(回答我自己的问题是为了帮助其他人,因为我花了一段时间才弄清楚发生了什么以及如何解决它)

关于javascript - 如何在react-final-form中传递null作为字段的初始值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50996047/

相关文章:

php - 通过延迟多封电子邮件提交来减少表单发布时间

ruby-on-rails - Rails、Globalize 3 和 CRUD 操作

reactjs - 这是TS的bug吗? (插值的 esliteral 不被视为字符串类型)

javascript - JavaScript 中的 "\"字符有什么问题?

php - 如何让 mysql 数据库 id 随机回显?

javascript - 如果 if 条件为假,if block 内的函数是否应为 typeof= ='function'?

javascript - 正则表达式,多次匹配一个单词

javascript - 查看表单并找到空白字段

javascript - 如何将React js文件包含在keycloak的ftl文件中?

javascript - Recharts 垂直渲染饼图