alibaba / alibaba/lowcode-engine

ArraySetter绑定的prop数组在源码面板中调用了setState函数后将对象地址改变了

Open
#2,930 0 comments 0 reactions 1 assignee Claimed by @liujuping View on GitHub
Dominant language
TypeScript
Stars
15.9k
Forks
2.7k
PR merge metrics
No merged PRs in 30d

Description

## **详细描述**

ArraySetter绑定的prop数组在源码面板中调用了setState函数执行后讲对象地址发生了改变,即使setState什么也不干。
例如:使用ArraySetter绑定的prop名称为options。在组件代码内使用useEffect去依赖option。然后到源码面板中随意找个时机调用this.setState({}),会发现依赖了option的useEffect竟然执行了。

尝试1:将option用的ArraySetter替换成VariableSetter,此时再次调用this.setState({}),组件内部的useEffect则没有执行。

尝试2:在造一个option2,也是使用ArraySetter,在组件内部写两个useEffect, 第一个依赖option,第2个依赖option2,再次调用this.setState({})。使用ArraySetter的两个prop的useEffect都执行了

所以我的结论是:在执行this.setState()函数后,ArraySetter绑定的对象地址发生了改变

使用版本是:
lowcode-engine/1.1.10-beta.3
lowcode-engine-ext/1.0.7-beta.3

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.