函数已定义但从未使用

Jer*_*ren 1 html javascript eslint

我在重新加载页面时遇到问题。我尝试通过添加此代码在 Vue 中使用 JavaScript

<body onload="myFunction()">

function myFunction() {
   window.location.reload()
}
Run Code Online (Sandbox Code Playgroud)

此错误弹出:

 74:10  error  'myFunction' is defined but never used  no-unused-vars
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Nin*_*aya 5

no-unused-vars是一个 ESLint 警告。发生这种情况是因为您没有在 javascript 代码中的任何地方调用您的函数,并且 ESLint 无法读取它是从 HTML 属性调用的。

您可以像这样关闭此警告:

<script>
/* eslint-disable no-unused-vars */
function myFunction() {
  window.location.reload()
}
/* eslint-enable no-unused-vars */
</script>
Run Code Online (Sandbox Code Playgroud)

尽管从 HTML 属性调用 javascript 函数在今天并不是一个好习惯。

有一种 javascript 方法来等待加载事件,而不是使用onload属性:

<script>
function myFunction() {
  window.location.reload()
}

document.addEventListener('DOMContentLoaded', myFunction);
</script>
Run Code Online (Sandbox Code Playgroud)

关于页面上的评论只重新加载一次。您可以保留页面已重新加载的事实localStorage

<script>
function myFunction() {
  // Check that the page has not been reloaded
  if (localStorage.getItem('reloaded') === null) {
    // Save the fact that we are reloading the page, and reload page
    localStorage.setItem('reloaded', true);
    window.location.reload();
  } else {
    // Otherwise, reset the flag so that on the fresh load the page can be reloaded again
    localStorage.removeItem('reloaded');
  }
}

document.addEventListener('DOMContentLoaded', myFunction);
</script>
Run Code Online (Sandbox Code Playgroud)