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

时间:2016-02-29 22:03:39

标签: properties reactjs state setstate

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

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

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

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

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

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

来自React文档的引用。

" setState()不会立即改变this.state但会创建一个挂起状态转换"

你怎么处理这件事?我觉得我已经尝试过了。

1 个答案:

答案 0 :(得分:1)

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

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