React - 使用状态更新管理条件渲染

React - Manage conditionnal rendering with state update

我遇到了渲染问题。我有一个模态形式 create/edit 一个实体(存储在父状态列表中),我呈现与列表中每个实体对应的“卡片”列表。每张卡片上都有一个按钮,用于打开模态表单以编辑实体。问题是,我无法根据当前操作(添加/编辑)和当前对象重新呈现我的表单。

由于这个问题解释起来比较复杂,我重现了它:https://codesandbox.io/s/myzoo-cbpw8?file=/index.js:2688-2711

一旦我创建了一个实体,我就被编辑表单困住了,我无法重新呈现一个新表单。这意味着呈现一个新表单,然后将可见性状态设置为 true,但这是行不通的。

您对如何实现这一点有什么想法吗?

如果您对我的 codesandbox 有任何提示或最佳实践,请告诉我!

问题是您正试图通过一个可见性变量同时管理编辑和添加对话框,因此当您打开添加对话框时,它也会打开编辑对话框。

我认为也许最好呈现一个对话框,既用于编辑又用于添加,并在打开对话框后将要编辑的动物存储在变量中,或者存储 false/null 以备不时之需创建一个新动物。

Link to example

我在这里做了一个例子https://codesandbox.io/s/myzoo-forked-7t9em?file=/index.js:177-198。我认为问题出在同一状态 isVisible 正在管理 2 个表单。

因此,当您打开任何表单时,将使用 add 操作调用组件 AnimalForm,然后使用 edit 操作。我们需要在一种情况下调用它。

所以,我只是做了一个小改动,每个表单都有一个变量 isVisible。这样表格就独立打开了。