【问题标题】:ArrayInput doesn't trigger onChange function when I remove item当我删除项目时,ArrayInput 不会触发 onChange 函数
【发布时间】:2021-10-23 17:59:36
【问题描述】:

我添加了一个onChange 属性。当我添加一个新元素时它可以完美运行,但如果我删除一个元素,则不会触发该功能。

<ArrayInput
   source="names"
   label={'Names'}
   onChange={updateNames}
   >
   <SimpleFormIterator   
      className={classes.iteratorFormItem}
      >
      <TextInput
         label=""
         source="value"
         validate={maxLength(MAX)}
         />
   </SimpleFormIterator>
</ArrayInput>

我不明白为什么onChange 在删除元素时不会触发,因为在这种情况下会修改数组。

【问题讨论】:

  • 您能否添加完整的代码或创建一个沙箱来重现您的用例?
  • 我不需要太多代码,updateNames 函数只是打印一个带有 ean 列表的 console.log,但是当我添加一个新值时,如果删除一个值,它不会打印任何内容。

标签: javascript reactjs react-admin


【解决方案1】:

onChange 不是 react-admin 的 &lt;ArrayInput&gt; 支持的道具。如果它在用户更新子记录时起作用,那是偶然的。文档没有提及它(参见https://marmelab.com/react-admin/Inputs.html#array-inputs)。

现在,您似乎想在用户更改数据时对其进行处理。为什么不使用parse 选项呢? (https://marmelab.com/react-admin/Inputs.html#common-input-props)。

【讨论】:

  • 嗯,我只想处理如果有 3 个项目并且用户删除其中一个会发生什么。 parse 看起来更像是在用户更改时处理数据。有没有这样的?
  • parse 将捕获数据中的变化,因此您可以检测其中一个元素何时被删除。
  • 而且 ArrayInput 不适合你的需要,你可以随时用你自己的组件替换它
猜你喜欢
  • 2020-05-22
  • 2011-10-26
  • 2018-06-15
  • 2011-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
相关资源
最近更新 更多