You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AlpineJS更新无关属性时x-for重渲染致DOM状态丢失问题

AlpineJS无关属性更新触发x-html内容重渲染问题

复现场景

已将原本复杂度较高的业务场景简化为可稳定复现的最小Demo,核心代码如下:

根组件数据定义:

<div x-data="{hasValue: false, categories: [{label: 'hey', id: 'first'}, {label: 'yow', id: 'second'}], htmlTest:'<input type=\'checkbox\'>'}"> 

循环渲染模板:

<template x-for="(category, index) in categories">
  <div>
    <div x-html="htmlTest"></div>
    <label class="c-system-tile" x-bind:for="category.id">
      <span class="hello" x-text="category.label"></span>
    </label>
  </div>
</template>

复现操作路径:运行代码后先手动勾选x-html渲染出的复选框,再点击绑定了更新hasValue逻辑的test按钮,即可观察到复选框的选中状态直接丢失。

成因排查

点击test按钮会修改hasValue属性值,该更新会触发当前组件下所有绑定的完整重计算,导致x-html指令插入的DOM内容被重新渲染替换,进而引发交互状态丢失等异常。本次最小复现仅表现为复选框选中态丢失,在复杂业务场景下可能触发更多不可预期的问题。

待确认疑问

  • 该现象是否属于AlpineJS的正常运行机制?
  • 若不属于预期行为,是否有可行的临时规避方案?
  • 任意无关属性更新就触发全量绑定重绘,是否为框架本身的Bug?

最终解决方案

该问题是AlpineJS V2版本的特有缺陷,将框架版本升级至V3即可彻底解决该问题,无需额外调整业务代码。


内容的提问来源于stack exchange,提问作者OzerU

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 00:12:16