diff --git a/packages/amis-core/src/renderers/wrapControl.tsx b/packages/amis-core/src/renderers/wrapControl.tsx index deafadf85..623d93cea 100644 --- a/packages/amis-core/src/renderers/wrapControl.tsx +++ b/packages/amis-core/src/renderers/wrapControl.tsx @@ -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)) ) {