簡體   English   中英

任何人都可以解釋這一點? 還是我做錯了?

[英]anyone can explain this? or Im doing this wrong?

所以我從數據庫訪問對象這里我有對象:

{
 data: {
  settings: {
   language: 'en-US'
  }
 }
}

我正在嘗試訪問語言部分,但不知何故不起作用,這是我的代碼:

translate(key, args, base) {
  const language = base.data.settings.language
  const result = this.translation.get(base ? language : 'en-GB')
  ...
  return result;
}

所以我的問題是對象沒有在結果中定義this.translation.get(base ? language : 'en-GB')

數據已定義,我試過console.log(language)並且它給了我 en-US :

const language = base.data.settings.language
console.log(language) //returning en-US
const result = this.translation.get(base ? language : 'en-GB') //returning 'cannot read property 'settings' of undefined'

但是如果我將語言變量更改為像const language = "en-US"這樣的字符串,它對它們都有效,我做錯了嗎?

我猜 base 是一個可選參數。 這解釋了cannot read property 'settings' of undefined錯誤的cannot read property 'settings' of undefined它實際上應該出現在代碼的第一行。 您需要按如下方式更改代碼:

const language = base ? base.data.settings.language : "en-GB";

如果路徑可能不存在,那么更安全的解決方案是:

const language = base?.data?.settings?.language ?? "en-GB";
const result = this.translation.get(base ? language : 'en-GB')

在 ^above 行中,您在檢查base是否為空后傳遞參數。

但同時在前一行中, const language = base.data.settings.language您已經訪問了base對象,而不管它是否為空。 那沒有意義。

還,

但是如果我將語言變量更改為像 const language = "en-US" 這樣的字符串,它對它們都有效,我做錯了嗎?

^這意味着問題出在該行

我建議您在那里添加無效檢查,如下所示:

const language = base ? base.data.settings.language : 'en-GB';
const result = this.translation.get(language)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM