【问题标题】:Not able to update SimpleForm TextInput value in react-admin无法在 react-admin 中更新 SimpleForm TextInput 值
【发布时间】:2020-08-31 07:59:08
【问题描述】:
<SimpleForm
label="resources.xyz"
{...props}

<TextInput
source="latitude"
label="resources.latitude"
defaultValue={
gpsLocation?.capturedLocation?.latitude || props?.record?.latitude
}
value={
gpsLocation?.capturedLocation?.latitude || props?.record?.latitude
}
/>......

在这里,当我们通过单独的函数捕获位置时,gpsLocation?.capturedLocation?.latitude 和 longitude 会发生变化,但是当我们提交表单时 textInput 值不会发生变化。

【问题讨论】:

    标签: reactjs react-redux react-admin


    【解决方案1】:

    如果您在 &lt;Edit&gt; 组件中,props.record 可能未定义。此外,您不应使用默认值中的记录纬度。 React-admin 会在加载记录时处理这些问题。最后,react-admin 的 TextInput 是controlled component,所以不要自己设置value

    这应该可行:

    <TextInput
        source="latitude"
        label="resources.latitude"
        defaultValue={gpsLocation?.capturedLocation?.latitude}
    />
    

    【讨论】:

    • 您好 Francois Zaninotto,感谢您的回复。但是,当我们使用 defaultValue 并更新此变量 (gpsLocation?.capturedLocation?.latitude) 值时,它不会反映在形式上。在 value={gpsLocation?.capturedLocation?.latitude} 中,它在表单中更新,但在保存时不会随表单更新值。我们正在尝试通过通过另一个按钮调用函数来通过 props (gpsLocation?.capturedLocation?.latitude) 更新值来更新值。
    • defaultValue 仅用于挂载。挂载后对其进行的任何更改都将被忽略。这就是 react-final-form 的工作方式。如果要以编程方式更改记录的值,请使用 react-final-form 的 useForm 获取表单实例,然后调用 form.change('latitude', gpsLocation?.capturedLocation?.latitude)(详见 final-form.org/docs/final-form/types/FormApi#change
    猜你喜欢
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多