当前位置: 首页 > 知识库问答 >
问题:

不更改窗体值

秋建义
2023-03-14

新反应和工作在现有的项目。我想当选择元素更改(onInstrumentS选正确地称为),填补其他字段的形式与它的相关值,但不工作。我可以得到正确的数据(在console.log检查),但不能通过相关的新数据填充表单。

const { Option, OptGroup } = Select;
const SettingsViewComponent: React.FC<{ base_instruments: any }> = props => {
  
  let [settings, setSettings] = React.useState<ISettings>();
  const instSearch = props.base_instruments;
  let insId = 0;
  React.useEffect(() => {
    async function fetchsettings(ins) {
      getSettings(ins)
        .then(rsp => {
          setSettings(rsp.data);
        });
    }
    fetchsettings(insId)
  }, [insId]);
  const onInstrumentSelected = async (value, option) => {
    insId = option.value;
    const stt= await getSettings(option.value);
    if (stt!= null) {
      console.log(stt.data); //correct data here 
// not working part:
      settings = stt.data
      setSettings(stt.data);

    } else {
      message.error('error');
    }
  };
  return !settings ? (
    <div />
  ) : (
    <Form
      initialValues={settings}
      onFinish={onFinish}
      onFinishFailed={onFinishFailed}>
      <Form.Item label="instrument" name="instrumentId">
        <Select onSelect={(val, op) => onInstrumentSelected(val, op)}>
          {instOptions}
        </Select>
      </Form.Item>
      <Form.Item label="Field 1" name="field1" >
        <Input />
      </Form.Item>
      <Form.Item label="Field 2" name="field2" >
        <Input />
      </Form.Item>
      <Form.Item label="Field3" name="field3">
        <Input />
      </Form.Item>
    </Form>);};
export default SettingsViewComponent;

试答试答

共有1个答案

陶柏
2023-03-14

我从ant.design找到了解决方案,并像下面一样解决了,关键的变化是在表单上使用setFieldsValue

// some unchanged

  const [form] = Form.useForm();
  const onInstrumentSelected = async (value, option) => {
    const stt= await getSettings(option.value);
    if (stt!= null) {
      console.log(stt.data); //correct data here 
  settings = stt.data
  form.setFieldsValue({ field1: settings.field1});
  form.setFieldsValue({ field2: settings.field2});
  form.setFieldsValue({ field3: settings.field3});

    } else {
      message.error('error');
    }
  };
  return !settings ? (
    <div />
  ) : (
    <Form form={form}
// unchanged
 类似资料:
  • 假设我有一个包含16到20个字段的表单,包括输入类型文本和文本区域。 表单使用POST方法将字段提交到php页面,该页面使用$\u POST变量更新数据库中的表。 我的问题是我只想更新数据库中更改的值,而不是更新每个值, 这种优化应用程序的方法有多好?,我也在另一个网站上读到以下答案: mySQL会自动检测到您正在更新一个与它已经包含的值相同的字段,并且实际上不会更新该字段。不确定这是否与其他数据

  • 我目前正在使用Xamarin形式的地图。对于这个例子,它工作得很好。https://developer.xamarin.com/guides/xamarin-forms/user-interface/map/ 现在我只需要更改Pin的颜色,下面的示例并不是我想要的,因为它对我来说有点过分了。 https://developer.xamarin.com/guides/xamarin-forms/ap

  • 如果选择了一个深色主题,“运行”窗格(不是python的“控制台”,也不是PyCharm中可访问的“终端”)将显示一个非常深色的字体,以至于几乎看不到它。切换到一个轻主题,一切都很好。我在Pycharm、这里、Google和YouTube中找到了关于为编辑器、控制台和终端窗格设置字体颜色的帮助,但在更改运行窗格颜色方面没有任何帮助。有什么想法吗?

  • 本文向大家介绍iOS更改字体,包括了iOS更改字体的使用技巧和注意事项,需要的朋友参考一下 示例 Swift Objective-C            

  • 使用DOM PDF创建一些报告,但是我唯一遇到的问题是设置无衬线字体。 我尝试了几乎所有的方法来设置CSS中可能的字体,但它总是以衬线字体呈现。 我并没有试图呈现一个自定义字体,只是一些简单的东西,比如helvetica或arial。 有没有其他人有过这个问题,或者知道为什么它可能会默认为衬线? 注意:应用程序在CodeIgnitor上运行。