在 React/Redux 中使用默认值输入文本

Text input with default value in React/ Redux

在我的 React/Redux 应用程序中,我有一个文本输入,其默认值是通过 Ajax 调用检索的。用户可以编辑输入中的默认值,然后通过单击 'submit' link 提交更新后的值。我正在努力为此使用不受控制或受控的输入。

有什么建议可以在这里做什么吗?

正如文档所说,defaultValue 仅在初始渲染时有用。因此,如果您想使用 defaultValue,则必须延迟该特定组件的呈现,直到加载数据之后。考虑用加载 gif(或类似的东西)代替 AJAX 调用的表单。

我认为第二种方法——使用 value 并使用 onChange 更新——并不像你说的那么糟糕;这通常是我写表格的方式。然而,这里真正的问题又是延迟加载。当初始值加载时,用户可能已经填写了该输入,只是看到它被接收到的 AJAX 值覆盖。不好玩。

我认为最好的方法就是不使用 AJAX。将您的初始数据作为全局变量附加到网页本身。这可能听起来像 anti-pattern,但您只读过一次全局,它节省了 AJAX 请求的成本。在 Redux 中,有一种方便的方法可以做到这一点,我已经记录了 and here.

只是为了补充大卫的回答。

有时调用 AJAX 加载默认值确实有意义。 对于前。您可以调用一些服务来支持多语言,在数据库中创建一个具有默认值的元素等。

我会采用 value-onChange 方法并防止用户在加载值之前对其进行编辑:

  1. 通过禁用输入,直到 AJAX 调用 returns。只需将禁用的 属性 绑定到一些显示默认已加载的道具。

  2. 在 AJAX 调用 returns 之前不呈现输入。当您从服务器获取默认值时,您修改状态以触发重新渲染。