javascript - 在 Form.Item 内使用 value 属性进行选择不会反射(reflect)该 value 属性的任何更改

标签 javascript html reactjs antd

我在使用 antd 表单时遇到关于 Select 的问题输入。我有两个Select输入,当第一个输入更改值时,我需要第二个输入“重置”到第一个选项。

Edit Select won't obey change of value

我需要跟踪每个 SelectReact.useState因为在我的真实代码中,这些值用于向后端发出请求并重新填充其他 Select输入但第一个,并且每个 Select有不同数量的选项,因此最好将它们“重置”为第一个选项。

我怎样才能实现我想要的目标?

最佳答案

由于您决定使用 valueonChange 控制输入字段,

您不需要表单名称,请将其删除。

然后设置第一个hander,检查值是否改变来决定是否将第二个hander设置为默认。

import React from "react";
import ReactDOM from "react-dom";
import { Select, Form } from "antd";
import "antd/dist/antd.css";

const fieldA = [{ value: 1, text: "Hello" }, { value: 2, text: "World" }];
const fieldB = [{ value: 1, text: "A" }, { value: 2, text: "B" }];

const App = () => {
  const [valueA, setValueA] = React.useState(null);
  const [valueB, setValueB] = React.useState(null);
  const setFieldA = (value: number) => {
    if (valueA !== value) {
      setValueB(null);
    }
    setValueA(value);
  };

  const setFieldB = (value: number) => {
    setValueB(value);
  };

  return (
    <Form layout="vertical">
      <Form.Item label="Field A">
        <Select value={valueA} onChange={setFieldA}>
          {fieldA.map(field => (
            <Select.Option value={field.value}>{field.text}</Select.Option>
          ))}
        </Select>
      </Form.Item>
      <Form.Item label="Field B">
        <Select value={valueB} onChange={setFieldB}>
          {fieldB.map(field => (
            <Select.Option value={field.value}>{field.text}</Select.Option>
          ))}
        </Select>
      </Form.Item>
      <div>
        Field A "real" value: {valueA}
        <br />
        Field B "real" value: {valueB}
      </div>
    </Form>
  );
};

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

Edit Select won't obey change of value

enter image description here

关于javascript - 在 Form.Item 内使用 value 属性进行选择不会反射(reflect)该 value 属性的任何更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61023425/

相关文章:

javascript - 有条件地用正则表达式替换字符串

html - 您如何定位提交按钮的禁用状态?

javascript - 在reactjs中将字符串作为html

javascript - 使用 JS 或 HTML 更改单选按钮单击时的图像

Javascript 和 jQuery 隐藏和显示不起作用

Javascript 元素选择排序

javascript - 需要通过 JavaScript 访问本地文本文件

html - 在 Mac 上使用 Pandoc 递归目录解析

javascript - 如何传播事件?无效状态错误 : Failed to execute 'dispatchEvent' on 'EventTarget' : The event is already being dispatched

reactjs - 使用鼠标事件值更新 react setState