Javascript 使用Ant Design进行反应-如何在上的多个之间共享状态?

Javascript 使用Ant Design进行反应-如何在上的多个之间共享状态?,javascript,reactjs,jsx,antd,ant-design-pro,Javascript,Reactjs,Jsx,Antd,Ant Design Pro,我不熟悉ReactJS和AntDesign 我试图让一组组件共享状态,因此当您选择第一个组件时,它会填充表单上下一个组件的选项,它必须是a,我不能使用a,因为它将使UI复杂化太多用户对计算机不太熟悉 下面是我试图实现的一个示例,useEffect上的数据将在单个请求中来自后端 在您选择第一个选项之后,我希望第二个下拉列表将充满子数组,但我得到的却是一个空下拉列表 我非常确定该值正在设置中,但React或Ant由于我的某些配置错误而没有重新设置它,但我无法理解原因。如果使用antd表单,则必须将输

我不熟悉ReactJS和AntDesign

我试图让一组组件共享状态,因此当您选择第一个组件时,它会填充表单上下一个组件的选项,它必须是a,我不能使用a,因为它将使UI复杂化太多用户对计算机不太熟悉

下面是我试图实现的一个示例,useEffect上的数据将在单个请求中来自后端

在您选择第一个选项之后,我希望第二个下拉列表将充满子数组,但我得到的却是一个空下拉列表

我非常确定该值正在设置中,但React或Ant由于我的某些配置错误而没有重新设置它,但我无法理解原因。

如果使用antd表单,则必须将输入元素包装在Form.Item components中。项目组件有一个名称prop。当您使用为表单指定名称的任何formInstance方法时。项是如何引用给定的输入组件。因此,当您执行formInstance.setFieldsValue{subList:value.list};您实际上没有子列表表单项,所以我认为这就是为什么antd没有设置它的值

话虽如此,您的第二次选择应该如下所示:

<Form.Item name="subList">
  <Select ... >
    {formInstance.getFieldValue("subList")?.map ... }
  </Select>
</Form.Item>
如果使用antd表单,则必须将输入元素包装在Form.Item组件中。项目组件有一个名称prop。当您使用为表单指定名称的任何formInstance方法时。项是如何引用给定的输入组件。因此,当您执行formInstance.setFieldsValue{subList:value.list};您实际上没有子列表表单项,所以我认为这就是为什么antd没有设置它的值

话虽如此,您的第二次选择应该如下所示:

<Form.Item name="subList">
  <Select ... >
    {formInstance.getFieldValue("subList")?.map ... }
  </Select>
</Form.Item>

我看到了两个问题。首先,调用formInstance.setFieldsValue{subList:value.list}中的值;只是所选项目的id,因此value.list返回未定义。您需要找到相关的对象const sub=list.findo=>o.id==value;。其次,setFieldsValue没有调用重新加载程序。谢谢您的评论!,我怎样才能让setFieldsValue调用一个rerender呢?我想它一直在调用一个,但由于您将undefined传递给setFieldsValue,所以它没有呈现第二个select。我不知道为什么你现在会出现地图错误。我发现有两个问题。首先,调用formInstance.setFieldsValue{subList:value.list}中的值;只是所选项目的id,因此value.list返回未定义。您需要找到相关的对象const sub=list.findo=>o.id==value;。其次,setFieldsValue没有调用重新加载程序。谢谢您的评论!,我怎样才能让setFieldsValue调用一个rerender呢?我想它一直在调用一个,但由于您将undefined传递给setFieldsValue,所以它没有呈现第二个select。不确定您现在为什么会出现地图错误。您好,谢谢您的评论!我也忘了在这个样本中添加。这是一个更新版本,包含您的所有观点。我还是不能让它工作。你介意再看一眼吗?我明白了,这确实解决了问题。奇怪的是,我使用表单状态只为数组设置一个随机场,然后迭代生成选项。您好,谢谢您的评论!我也忘了在这个样本中添加。这是一个更新版本,包含您的所有观点。我还是不能让它工作。你介意再看一眼吗?我明白了,这确实解决了问题。奇怪的是,我使用表单状态只为数组设置一个随机场,然后迭代它来生成选项。