我如何将 vanilla Js 代码转换为 vue js 代码

Posted

技术标签:

【中文标题】我如何将 vanilla Js 代码转换为 vue js 代码【英文标题】:How do i convert vanilla Js code into vue js code 【发布时间】:2020-07-12 09:10:36 【问题描述】:

//Logged out Events
document.getElementById("login-help").addEventListener("click", function()
    document.querySelector(".forgotten").style.display = "flex";
    document.querySelector(".login").style.display = "none";
    document.querySelector(".signup").style.display = "none";
)

document.getElementById("forgotten-back").addEventListener("click", function()
    document.querySelector(".forgotten").style.display = "none";
    document.querySelector(".login").style.display = "flex";
    document.querySelector(".signup").style.display = "none";
)

document.getElementById("signup-btn").addEventListener("click", function()
    document.querySelector(".forgotten").style.display = "none";
    document.querySelector(".login").style.display = "none";
    document.querySelector(".signup").style.display = "flex";
)

document.getElementById("signup-back").addEventListener("click", function()
    document.querySelector(".forgotten").style.display = "none";
    document.querySelector(".login").style.display = "flex";
    document.querySelector(".signup").style.display = "none";
)

这是我的 vanilla Js 代码,我正在尝试将其转换为 vue js 代码,但是当我输入此代码时出现错误。如何将我的 vanilla js 代码转换为 vue js?

<script>
// @ is an alias to /src
import HelloWorld from "@/components/HelloWorld.vue";

export default 
  name: "Home",
  methods: 
    //Logged out Events
document.getElementById("login-help").addEventListener("click", function()
    document.querySelector(".forgotten").style.display = "flex";
    document.querySelector(".login").style.display = "none";
    document.querySelector(".signup").style.display = "none";
)

document.getElementById("forgotten-back").addEventListener("click", function()
    document.querySelector(".forgotten").style.display = "none";
    document.querySelector(".login").style.display = "flex";
    document.querySelector(".signup").style.display = "none";
)

document.getElementById("signup-btn").addEventListener("click", function()
    document.querySelector(".forgotten").style.display = "none";
    document.querySelector(".login").style.display = "none";
    document.querySelector(".signup").style.display = "flex";
)

document.getElementById("signup-back").addEventListener("click", function()
    document.querySelector(".forgotten").style.display = "none";
    document.querySelector(".login").style.display = "flex";
    document.querySelector(".signup").style.display = "none";
)
  ,
  components: 
    HelloWorld
  
;
</script>

【问题讨论】:

无法“自动”将 Vanilla JS 转换为 Vue。这需要重写您当前的应用程序。请阅读 Vue 的工作原理。 【参考方案1】:

您在 vue 文件的模板部分添加点击事件,而不是在脚本(js)部分。它通常看起来像这样:

 <button @click="yourFunction">Click me</button>

然后在你的方法中你有:

 methods: 
   yourFunction() 
     this.addClass = true;
   ,
   

添加样式的方法有很多种,其中一种就是绑定类:

 <button :class="'hidden': addClass"  

你在数据中有一些布尔变量:

  data() 
    return 
     addClass: false,
    ;
    

您可以在官方文档中阅读更多内容:https://vuejs.org/v2/guide/events.html 和 https://vuejs.org/v2/guide/class-and-style.html

【讨论】:

【参考方案2】:

您需要根据要发生的操作绑定类: Vue binding classes and styles 您绑定的类需要由 data() 定义,然后将 add events 定义为 html 元素以切换这些类或以任何方式操作

【讨论】:

以上是关于我如何将 vanilla Js 代码转换为 vue js 代码的主要内容,如果未能解决你的问题,请参考以下文章

将 jQuery each() 循环重新设计为 Vanilla JS

如何将以下代码转换为 vue js 代码?

如何将组件内的 vue.js 方法转换为已创建的方法

DOM 渲染后在 React 中执行 Vanilla JS 脚本

将 eloquent 关系转换为 vue js 代码

使用 vanilla javascript 将 es6 模板字符串转换为 html 元素