无法更改从父级传递的 JS 对象中的属性作为 Lightning Web 组件中的 API 变量
Unable to Change attribute in JS Object passed from Parent as API Variable in Lightning Web Component
当我试图在 LWC 的连接回调中更改 Api 属性的值时,该值没有改变。它保留来自 Parent 的值。
请在下面找到示例代码:
export default class myLWC extends LightningElement{
@api myApiVar={};//isNew is true in parent
connectedcallback{
Console.log(myApiVar.isNew);//true
myApiVar.isNew=false;
Console.log(myApiVar.isNew);//true
}
=========================================== ====
如有遗漏请指教
在这里你试图用 api 装饰器修改一个 public 变量,这是不可能直接实现的。您需要引入一个新的 Temp 对象来解决您的目的。
您可以修改代码以更改为:
export default class myLWC extends LightningElement{
@api myApiVar={};//isNew is true in parent
connectedcallback{
Console.log(myApiVar.isNew);//true
let tmpObj = JSON.parse(JSON.strigify(myApiVar));
tmpObj.isNew=false;
myApiVar=tmpObj;
Console.log(myApiVar.isNew);//false
}
=================================================
如果适合您,请将此设为最佳答案。
当我试图在 LWC 的连接回调中更改 Api 属性的值时,该值没有改变。它保留来自 Parent 的值。 请在下面找到示例代码:
export default class myLWC extends LightningElement{
@api myApiVar={};//isNew is true in parent
connectedcallback{
Console.log(myApiVar.isNew);//true
myApiVar.isNew=false;
Console.log(myApiVar.isNew);//true
}
=========================================== ==== 如有遗漏请指教
在这里你试图用 api 装饰器修改一个 public 变量,这是不可能直接实现的。您需要引入一个新的 Temp 对象来解决您的目的。 您可以修改代码以更改为:
export default class myLWC extends LightningElement{
@api myApiVar={};//isNew is true in parent
connectedcallback{
Console.log(myApiVar.isNew);//true
let tmpObj = JSON.parse(JSON.strigify(myApiVar));
tmpObj.isNew=false;
myApiVar=tmpObj;
Console.log(myApiVar.isNew);//false
}
=================================================
如果适合您,请将此设为最佳答案。