Runtime API / Method

FlamoInstance.setProps

以一次可取消、可回滚的事务原子提交 Instance 公共属性。

使用说明

setProps() 会先验证完整 patch,并在每个 Instance 内串行执行。Variant 变更先完成,普通绑定与公共更新事件随后才可见;失败或取消会恢复之前的 selection,不发布部分 props。

当 Component Set 根脚本继承到页面中的具体 INSTANCE 时,ctx.instance.setProps() 会使用该脚本合并后的有效 surface,并自动把 Variant 绑定定向到当前实例。未知属性、无 Runtime binding 的属性和跨 Component Set 的绑定会返回 rejected;Variant 轴提交成功时,variantReceipts 至少包含当前实例的一条 applied 回执,不会再把页面级无绑定 patch 误报为成功。

const receipt = await instance.setProps({
disabled: false,
variant: { Size: 'Large', State: 'Active' },
}, { signal });
if (receipt.status !== 'committed') console.warn(receipt.error);

组件根脚本可以直接提交当前实例的状态轴:

const receipt = await ctx.instance.setProps({ state: 'hover' });
if (receipt.status !== 'committed' || receipt.variantReceipts[0]?.status !== 'applied') {
throw new Error(receipt.error?.message ?? 'Button state was not applied');
}

需要同步返回旧式链式句柄时可继续使用 set();需要等待最终一致状态、取消或审计时使用 setProps()。

参数

patchRecord<string, unknown>
options{ ... }