Salesforce: wire的恼人之处
2021/10/28 6:10:02
本文主要是介绍Salesforce: wire的恼人之处,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
刚做的一个lwc,里面需要Account的数据,很自然想到用getRecord来做,这样就不需要apex:
@wire(getRecord, { recordId: '$accountId', fields: ACC_FIELDS }) getAccountData(result) { this.wiredAccountData = result; if (result.data) { this.badDebtStatus = getFieldValue(result.data, Bad_Debt_Status); ...... } }
需要刷新时,就用refreshApex(this.wiredAccountData); 来获得最新的Account数据。以为这就是“标准”的做法。
调试时却发现,首先,refreshApex是“异步”的。它不过是触发了wire方法,就算完成了任务,但是它不会等getAccountData完全执行完毕,再执行refreshApex的下一条语句。即使用refreshApex(this.wiredAccountData).then()也不行。没办法,只好加一个变量,先设成false,在getAccountData方法的末尾改成true,然后在refreshApex后,先检测这个变量是否为true,如不是,则用setTimeout延时重试。
而这样也没解决问题。调试发现,某些情况下,这个变量始终是false,不会变成true,也就是说getAccountData方法根本没有执行。
折腾了半天之后,只好放弃wire方法,改用apex来取Account数据,用lwc来调用。
感觉wire方法如果可以改变输入参数,它会自动更新数据,还比较方便。如果需要手工通过refreshApex来刷新,不是太可靠。
这篇关于Salesforce: wire的恼人之处的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升