Wiring a Function for Lightning Data Service (JavaScript)

DEX602 - Unit 2 Introducing Lightning Web Components

📄 第 152 页 🎬 视频课程

课程章节介绍

让我们来聊聊这段代码的亮点和一些需要注意的地方。 首先,我们有一个公共属性叫做`recordID`,这个属性是作为反应变量提供给`wire`服务的。这意味着当`recordID`的值发生变化时,`wire`服务会自动重新获取数据。 接下来,我们不是直接装饰一个属性,而是装饰一个方法,这个方法的名字叫做`WiredContact`。这个名字其实没有什么特别的含义,它只是一个方法名,不能在其他地方使用,但它也不能是匿名的。这个方法会接收一个对象,这个对象有两个属性:`Error`和`Data`。 我们需要一个地方来存放这些数据或错误信息,所以我们声明了两个属性来存储记录和错误。这里有一个重要的点:我们不可能同时接收到错误和数据。也就是说,要么我们接收到数据,要么我们接收到错误,但不会同时接收到两者。这就是为什么我们在每个子句中都要将另一个属性设置为`UNDEFINED`。 另外,当`wire`服务初始化时,可能会发生既没有接收到错误也没有接收到数据的情况。所以,即使我们已经检查了`if(Data)`,我们仍然需要在`else`子句中检查`if(Error)`。 最后,关于语法`@wire(参数)wiredMethodName`,这应该会让你想起使用带参数的Apex注解,比如`@Future(allout=true)ApexMethodName`。这种语法结构在Apex中也很常见,用来指定方法的执行方式或行为。 总结一下,这段代码展示了如何使用`wire`服务来动态获取数据,并处理可能出现的错误。通过装饰一个方法而不是属性,我们可以更灵活地控制数据的获取和处理过程。希望这些解释能帮助你更好地理解这段代码的工作原理!