iT邦幫忙

2022 iThome 鐵人賽

DAY 24
0
Modern Web

React 新手村 - 填坑記系列 第 24

React 新手村 - 填坑記 - Day24 常見錯誤(三)

  • 分享至 

  • xImage
  •  

TypeError: Cannot read property 'replace' of undefined

以下程式碼出現這樣的錯誤,第一時間會判斷是不是找不到replace這個函數

items.map((item,i) =>{
     let contentRep = item.content;
     let titleRep = item.title;

     if(contentRep!=null || contentRep!=''){
        contentRep = contentRep.replace(searchItem,'<font style="background-color:#ffeb3b;color: #0d6efd;"><b>'+searchItem+'</b></font>')
     }

     titleRep = titleRep.replace(searchItem,'<font style="background-color: #ffeb3b;color: #0d6efd;"><b>'+searchItem+'</b></font>')
})

但實際上並非如此,主要造成這樣的原因在於,在執行到replace之前會判定資料是否存在,因此如果資料這時候傳回的是NULL或者是空值,就會造成系統認定的異常,因此要解決這問題可以藉由以下方式修改

 items.map((item,i) =>{
     //資料到replace之前先行判斷並且如果資料不存在則直接帶入空值
     let contentRep = item.content || '';
     let titleRep = item.title || '';

     //上下都判斷,資料不存在則不進行,即可減少系統發生的錯誤機率,畢竟還有沒有其他問題點有待商榷
     if(contentRep!=null || contentRep!=''){
       contentRep = contentRep.replace(searchItem,'<font style="background-color: #ffeb3b;color: #0d6efd;"><b>'+searchItem+'</b></font>')
     }
     
     if(titleRep!=null || titleRep!=''){
         titleRep = titleRep.replace(searchItem,'<font style="background-color: #ffeb3b;color: #0d6efd;"><b>'+searchItem+'</b></font>')
     }
})

上一篇
React 新手村 - 填坑記 - Day23 常見錯誤(二)
下一篇
React 新手村 - 填坑記 - Day25 常見錯誤(四)
系列文
React 新手村 - 填坑記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言