alibaba / formily

📱🚀 🧩 Cross Device & High Performance Normal Form/Dynamic(JSON Schema) Form/Form Builder -- Support React/React Native/Vue 2/Vue 3
https://formilyjs.org/
MIT License
10.93k stars 1.42k forks source link

[Bug Report] 使用 field.setComponentProps更新后,组件内 onChange 会导致 props.xxx一直变更 #4169

Closed vladimirdh closed 4 days ago

vladimirdh commented 1 week ago

Reproduction link

Edit on CodeSandbox

Steps to reproduce

  1. 通过 field.setComponentProps更新 props 字段 key2
  2. 组件内通过useEffect(()=>{ onChange(...) }, [key2])的形式去消费 key2
  3. 更新了自身的 value 后,props.key2 的引用地址一直在变更,导致 useEffect 一直会被触发

What is expected?

不重新触发更新

What is actually happening?

props.key2 的引用地址一直在变更,导致 useEffect 一直会被触发

Package

@formily/react@2.3.1


97vack commented 4 days ago

可以考虑使用React Form Simple 文档:react-form-simple 它提供了一套全面的解决方案,涵盖了数据绑定、验证规则、错误处理和 UI 更新等多个方面。其设计理念是简化开发流程,提升开发效率,并为开发者提供高度灵活和可扩展的工具。并高效构建复杂的表单应用。

vladimirdh commented 4 days ago

发现重复了 https://github.com/alibaba/formily/issues/4097