动态属性设置常见问题
==========

本文档介绍动态属性设置的常见问题并提供参考。

#### 使用AttributeModifier设置组件动态属性，出现jscrash

**问题现象**

使用AttributeModifier对组件进行[动态属性设置](https://developer.huawei.com/consumer/cn/doc/harmonyos-references/ts-universal-attributes-attribute-modifier)，设置某些属性后出现[JS Crash](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/jscrash-guidelines)。

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/30/v3/Q87xYgJ6TJanKfu86Lck8g/zh-cn_image_0000002625107889.png?HW-CC-KV=V1&HW-CC-Date=20260612T073324Z&HW-CC-Expire=86400&HW-CC-Sign=C4356C58ED5982E54ACFBF17A47C24D8079B4E3DAADFE0C3A0822AF80A5C38B2)

**解决措施**

根据提示跳转至报错日志，查看具体的报错原因，进行相应的修改，具体的跳转方法请参考下方示例代码。

**示例代码**

该示例通过Button绑定AttributeModifier，展示了AttributeModifier在设置不支持的属性时会抛出异常的场景，运行示例代码后会出现jscrash报错，参考下方的动图，跳转至具体的报错场景。在本示例中，删除reuseId相关代码即可正常运行。

// xxx.ets
// 设置Button组件属性的自定义AttributeModifier
class MyButtonModifier implements AttributeModifier<ButtonAttribute> {

  applyNormalAttribute(instance: ButtonAttribute): void {
    instance.reuseId('String') // 删除本行可以让程序正常运行
    instance.backgroundColor(Color.Red)
  }
}

@Entry
@Component
struct attributeDemo {
  @State modifier: MyButtonModifier = new MyButtonModifier();

  build() {
    Row() {
      Column() {
        Button('Button')
          .attributeModifier(this.modifier)
      }
      .width('100%')
    }
    .height('100%')
  }
}

![](https://contentcenter-vali-drcn.dbankcdn.cn/pvt_2/DeveloperAlliance_scene_100_1/f5/v3/z10iGv1xQJuTuLW8HuYHtw/zh-cn_image_0000002594668372.gif?HW-CC-KV=V1&HW-CC-Date=20260612T073324Z&HW-CC-Expire=86400&HW-CC-Sign=CC2F9EE5CB3155356C4621A9575F1B1C76B509FC716312FCEB3452CF25C1C10B)