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

调用setAttributes后WordPress Blocks API的JSX组件未重渲染

问题原因

你直接用slides.push()修改了原数组的内容,然后把同一个数组引用传给setAttributes。Gutenberg的状态更新机制依赖于引用变化来检测数据更新,因为原数组的引用没改变,所以组件不会触发重渲染。

修复方案

创建一个新的数组副本,而不是修改原数组,再把新数组传给setAttributes。可以用ES6的扩展运算符来实现:

const addSlide = () => {
  // 创建新数组,包含原数组所有元素 + 新的slide对象
  const newSlides = [
    ...slides,
    {
      title: "",
      description: "",
      media: [],
    }
  ];

  setAttributes({ slides: newSlides });
};
额外注意事项
  • 数组渲染时要给每个元素加唯一的key属性,避免React的渲染警告,比如可以用索引或者给每个slide加唯一id:
    {slides.map((slide, index) => (
      <div className="hero-slide" key={index}>
        {/* 其他内容 */}
      </div>
    ))}
    
  • 代码里的onChangeContent、onSelectImage、mediaID这些变量/函数目前未定义,后续需要补充实现,避免运行报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:05:24