LWC_003_Wire

在使用 LWC 的 `@wire` 装饰器调用 Apex 方法时,可以通过在 `connectCallback()` @wire中传递参数来动态设置方法的输入参数。具体步骤如下:

1. 创建一个标记属性来存储参数。例如,假设要将字符串 `'test'` 作为参数传递给 Apex 方法,则可以在组件类中添加以下属性:

```javascript
@api myParam = 'test';
```

2. 在 `connectCallback()` @wire中创建一个变量来存储要传递给 Apex 方法的参数。例如,可以将 `myParam` 属性的值存储在一个名为 `paramValue` 的变量中:

```javascript
connectCallback() {
const paramValue = this.myParam;
// ...
}
```

3. 在 `@wire` 装饰器中使用 `paramValue` 变量作为输入参数。例如,可以使用以下代码调用带有参数的 Apex 方法:

```javascript
@wire(myApexMethod, { param: '$paramValue' })
myApexMethodResult;
```

这将使用名称为 `myApexMethod` 的 Apex 方法,并将 `paramValue` 变量的值包装在对象中作为 `param` 参数的值进行传递。

完整示例代码如下:

```javascript
import { LightningElement, wire, api } from 'lwc';
import myApexMethod from '@salesforce/apex/MyClass.myApexMethod';

export default class MyComponent extends LightningElement {
@api myParam = 'test';

@wire(myApexMethod, { param: '$paramValue' })
myApexMethodResult;

connectCallback() {
const paramValue = this.myParam;
// do other stuff as needed
}
}
```

需要注意的是,`connectCallback()` @wire只会在第一次连接到组件时调用一次。如果需要在 `myParam` 属性的值更改时重新调用 Apex 方法,则需要添加其他逻辑来处理该事件。

posted @ 2023-04-19 10:17  BandariFang  阅读(36)  评论(0编辑  收藏  举报