Salesforce学习笔记之lwc
1.在Flow中使用Lightning Web Component(lwc)时,发现一个问题。给这个组件设置了一个输入参数,其值取自前一个Screen。第一次运行时,参数的值正确,但是如果这时退回前一个Screen,修改一下输入参数,然后再前进到这个lwc的Screen,发现lwc的输入参数值没有改变。
花了很多时间,最后才搞明白,原来只需将这个输入参数的类型设置成input,也就是在.js-meta.xml的property设置里,加上一个role="inputOnly"的属性,就可以了。
不过,比如在一个Screen里,既有lwc的标准控件如datetime picker,也有lwc,将标准控件的变量值作为lwc的输入参数,希望改变标准控件的值时,也同时改变lwc,好像做不到。原因大概是标准控件的变量值只有在Flow的导航事件发生时才赋值。而唯一能监测这个事件的只有通过validate(下面提到),而触发validate时,变量还没有赋值,所以无法检测。
p.s. 2021.6.10.
不知道是当初没有发现,还是Salesforce最新的更新,现在发现放在Screen的lwc有个选项Advanced - Refresh inputs to incorporate changes elsewhere in the flow,勾选之后,就解决了这个问题,用不着inputOnly属性。
2.在研究上面的问题时,有个副产品。在lwc的js里加个validate方法,可以实现前进到下一步时验证数据的合法性。这是validate的主要用法,但也可以利用它能在前进到下一步时触发这个特性,做些别的事,比如上传文件等。也就是说,将validate当作一个FlowNavigationNextEvent/FlowNavigationFinishEvent的监听器来使用。
另外validate方法触发时,返回isValid: false,会重新加载lwc,也就是重新触发connectedCallback方法。
3.使用lwc所提供的datatable,缺省是在每条记录前显示多选框(checkbox),如果要改成单选(radiobutton),只需加上属性max-row-selection="1"即可。不过,这样做的话,设置selectedRows属性,就不起作用了,也就是说,无法在datatable显示时,自动选中某列。这是lwc的datatable的缺陷。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律