簡體   English   中英

Return 語句導致:預期一個賦值或 function 調用,而是看到一個表達式 no-unused-expressions

[英]Return statement leads to: Expected an assignment or function call and instead saw an expression no-unused-expressions

我有時仍然很難理解何時或何時不使用return語句。 我最近在我的 ReactJS 代碼中遇到了一個問題。 基本上我從 fetch 調用中得到 html 然后將其設置為元素的 innerHTML。 設置后我需要稍微更改該數據。

當它不起作用時:

  useEffect(()=>{
    setHeaderFooter(props.data.header,props.data.footer, changeLinks)
  }, [props.data.header,props.data.footer])

  const changeLinks = ()=>{
    $(document).find('nav.navbar a[href*="/oc"]').each(function (index, element) {
      var original = $(element).attr('href');
      var final = process.env.REACT_APP_PLATFORM_URL + original;
      $(element).attr('href', final);
  });
  
  // Adds the first letter of the users name as the icon in header.
      $('#firstLetter').text()
      $('#firstLetterLink').text().charAt(0).toUpperCase()
  }

export const setHeaderFooter=(head,foot, callback) =>{
    let header = document.querySelector('#header')
    let footer = document.querySelector('#footer')
    header.innerHTML = head, footer.innerHTML = foot
   return callback()
}

當它工作時(最后沒有修改階段):

  useEffect(()=>{
    setHeaderFooter(props.data.header,props.data.footer)
  }, [props.data.header,props.data.footer])

  const changeLinks = ()=>{
    $(document).find('nav.navbar a[href*="/oc"]').each(function (index, element) {
      var original = $(element).attr('href');
      var final = process.env.REACT_APP_PLATFORM_URL + original;
      $(element).attr('href', final);
  });
  
  // Adds the first letter of the users name as the icon in header.
      $('#firstLetter').text()
      $('#firstLetterLink').text().charAt(0).toUpperCase()
  }

export const setHeaderFooter=(head,foot) =>{
    let header = document.querySelector('#header')
    let footer = document.querySelector('#footer')
    return header.innerHTML = head, footer.innerHTML = foot
}

有人可以解釋一下這里發生了什么。 我想更好地理解 return 語句。

問題是在headerfooter分配之間使用的逗號:

改變這個:

header.innerHTML = head, footer.innerHTML = foot
return callback()

對此:

header.innerHTML = head;
footer.innerHTML = foot;
return callback();

要解釋這個問題,請參閱MDN 文檔

逗號運算符 (,) 計算其每個操作數(從左到右)並返回最后一個操作數的值

在您的情況下, footer.innerHTML = foot最后一個操作數,將被返回,但由於您沒有將返回的值分配給任何東西,所以它被浪費了,因此您得到了 lint 錯誤。 您可以在Disallow Unused Expressions (no-unused-expressions)中閱讀有關 lint 錯誤的更多信息

暫無
暫無

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

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