頁面初始化調用configuration.setLocale()接口踩坑記錄


問題描述

快應用app.ux中定義了全局方法changeLocaleConfiguration,該方法是用於設置應用顯示語言,在首頁生命周期onInit中調用changeLocaleConfiguration(),實際已經觸發了該方法,但是應用語言並未發生改變。 代碼如下:

app.ux中:

   changeLocaleConfiguration() {
      this.localeObject = configuration.getLocale()
      if (this.localeObject.language === 'zh') {
        configuration.setLocale({
          language: 'en',
          countryOrRegion: 'US'
        })
      }
      else {
        configuration.setLocale({
          language: 'zh',
          countryOrRegion: 'CN'
        })
      }
    }

首頁:

 onInit() {
      this.$app.$def.changeLocaleConfiguration()
    }

問題分析

頁面初始化onInit()時間非常短,設置語言屬於比較耗時的操作,頁面來不及渲染。

解決辦法

在頁面初始化調用設置語言接口時候加上時延,代碼如下:

onInit() {
      setTimeout(() => {
        this.$app.$def.changeLocaleConfiguration()
      }, 100);
    }

總結:

不建議在頁面onInit中調用耗時的操作,如果必須要用需要加上時延。

欲了解更多詳情,請參見:

快應用開發指導文檔:https://developer.huawei.com/consumer/cn/doc/development/quickApp-Guides/quickapp-whitepaper

多語言支持指導文檔:

https://developer.huawei.com/consumer/cn/doc/development/quickApp-References/quickapp-multi-language#h1-1577956810051


原文鏈接:
https://developer.huawei.com/consumer/cn/forum/topic/0204393662842000121?fid=18
作者:鼓樓趙又廷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM