HarmonyOS 鸿蒙Next:如何根据变量动态设置链式属性

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:如何根据变量动态设置链式属性

 我知道我这么写是错的,但是不知道应该怎么写

我希望根据变量,isLocal 来决定是不是要设置 onInterceptRequest

import { webview } from ‘@kit.ArkWeb’;
import JsBridge from ‘./JSBridge’;

@Component struct Index { controller: webview.WebviewController = new webview.WebviewController(); @Prop src: string | Resource = ‘’; @Prop isLocal: boolean = true; @State jsBridge: JsBridge = new JsBridge();

aboutToAppear() { // 配置Web开启调试模式 webview.WebviewController.setWebDebuggingAccess(true); }

getMimeType(filePath: string) {

<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> mimeType

}

build() { Web({ src: this.src, controller: this.controller }) .domStorageAccess(true) .javaScriptProxy({ object: this.jsBridge, name: ‘jsBridge’, methodList: this.jsBridge.methodList, controller: this.controller }) if (this.isLocal) { .onInterceptRequest(event => { const rawFilePath = event.request.getRequestUrl().replace(http://localhost/, ‘’) const webResourceResponse = new WebResourceResponse(); webResourceResponse.setResponseEncoding(“UTF-8”); webResourceResponse.setResponseCode(200); webResourceResponse.setResponseData($rawfile(rawFilePath)); webResourceResponse.setResponseMimeType(this.getMimeType(rawFilePath)); return webResourceResponse; }) }else {

  }

} }

export default Index;<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

5 回复

可以尝试使用三目运算符,this.isLocal?xxxxx:undefined

楼主后面找到解决的办法了嘛?我似乎也遇到相同的问题了

三目运算符

看到这些,我头疼,不敢随意串改😂

在HarmonyOS(鸿蒙)中,如果你想根据变量动态设置链式属性,你可以考虑使用反射(Reflection)或者构建一个动态执行的表达式系统(如果HarmonyOS的SDK支持此类功能)。然而,由于HarmonyOS的API和框架设计,直接的链式调用可能并不支持动态解析。

一种常见的替代方案是使用if-elseswitch语句来根据变量的值选择不同的链式调用路径。如果属性设置非常频繁或复杂,可以考虑使用策略模式或状态模式来管理不同的链式调用逻辑。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部