鸿蒙ets文件第一层接口直接赋值可以更改数据,第二层不行,需要在内层改才行,单页面
·
深层嵌套单页面,
代码如下:
interface user1{
id:number
name:string
}
interface address1{
city:string
street:string
}
interface Order {
id: number;
user: user1;
address: address1;
}
@Entry
@Component
struct Test4 {
@State message: string = 'Hello World';
@State me:Order={
id:1,
user:{
id:2,
name:'aaa'
},
address:{
city:'广东',
street:'十三巷'
}
}
build() {
Column(){
Text(this.me.user.name)
.fontColor('#ffd04747') // 修正:颜色值格式(需引号包裹)
.margin({ bottom: 20 }) // 增加间距,提升体验
// 示例:修改address.city
Button('修改name属性')
.backgroundColor('#007DFF')
.onClick(() => {
// ✅ Fix: Manual object reassignment (no spread operator)
// Step 1: Create a new User1 object (copy all properties + update name)
const newUser: user1 = {
id: this.me.user.id, // Copy original id
name: 'kkk123' // Update target property
}
// Step 2: Create a new Order object (copy all properties + replace user)
const newOrder: Order = {
id: this.me.id, // Copy original order id
user: newUser, // Use new user object
address: this.me.address // Keep original address (unchanged)
}
// Step 3: Assign new object to @State variable (trigger UI update)
this.me = newOrder
})
}
}
}
更多推荐

所有评论(0)