fix: 不要通过 isEqual 去比对 props.data 里面可能存在循环引用导致死循环 (#5353)

This commit is contained in:
liaoxuezhi 2022-09-13 11:16:15 +08:00 committed by RUNZE LU
parent be0ff2991e
commit 16c3f89873

View File

@ -354,8 +354,12 @@ export function wrapControl<
// 渲染器中的 defaultValue 优先(备注: SchemaRenderer中会将 value 改成 defaultValue
if (
!isEqual(props.defaultValue, prevProps.defaultValue) ||
(!isEqual(props.data, prevProps.data) &&
isNeedFormula(props.defaultValue, props.data, prevProps.data))
(isNeedFormula(
props.defaultValue,
props.data,
prevProps.data
) &&
props.data !== prevProps.data)
) {
const curResult = FormulaExec['formula'](
props.defaultValue,
@ -383,7 +387,7 @@ export function wrapControl<
// value 非公式表达式时name 值优先,若 defaultValue 主动变动时,则使用 defaultValue
if (
// 然后才是查看关联的 name 属性值是否变化
!isEqual(props.data, prevProps.data) &&
props.data !== prevProps.data &&
(!model.emitedValue ||
isEqual(model.emitedValue, model.tmpValue))
) {