处理输入字段时如何处理 React setState()?

How to Handle React setState() when dealing with input fields?

我有 3 个文本框。 我有 1 个下拉菜单。

当应用程序 starts/page 加载时,文本框为空,下拉列表中填充了各种产品。

当我从下拉列表中 select 一个项目时,我将对象加载到文本字段中进行编辑。

使用属性 (this.props) 时,数据会正确加载到文本框中,但我无法对文本进行编辑,因为应该使用状态来完成。

但是,如果我使用状态 (this.state),组件永远不会保持同步。如果我从下拉列表中选择 select 项目 1,它会加载到状态中,但不会呈现到屏幕上,直到我从下拉列表中选择另一个项目。

因此,当我选择项目 2 时,它会将项目 1 加载到文本框中。

引用自 React 文档。

"setState() does not immediately mutate this.state but creates a pending state transition"

你们到底是怎么处理这个的?感觉自己都试过了

您需要将状态保留在父组件中。父级将是所有这些文本框和下拉菜单的父级。从那里,您只需要将回调函数作为道具传递给文本框和下拉组件。在该回调函数中,您应该将选定的下拉菜单项作为参数。调用该函数时,您需要更新文本框的内容。我认为您可以通过保持三个文本框的状态来做到这一点,即当前显示的文本。最初它们的状态是未定义的,所以它们会显示为空。在状态下,您可以跟踪索引和值。

之后,您还需要将回调函数传递给文本框。这些回调函数随后会在您编辑字段时跟踪和更新下拉菜单项的内容。当您编辑时,您将调用回调,它应该更新状态,并使用新内容再次渲染下拉菜单。