vuejs v-on="click"为啥会刷新页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuejs v-on="click"为啥会刷新页面相关的知识,希望对你有一定的参考价值。

你的”btnSearchTTT“这个按钮,只是普通的button或是input type="button"吧,这种类型的按钮,点击后是不会进行页面提交的,只是触发相应事件。 如果你需要刷新,那么应该在这个click里面做完你要做的事情然后用代码控制去刷新 参考技术A 可能是用html的<form>包含了这个属性的标签。将标签form改成 div.

使用“v-on:”指令向 <router-link> 组件添加事件监听器 - VueJS

【中文标题】使用“v-on:”指令向 <router-link> 组件添加事件监听器 - VueJS【英文标题】:Add event listener to <router-link> component using "v-on:" directive - VueJS 【发布时间】:2017-06-24 19:30:13 【问题描述】:

我正在尝试将自定义处理程序 InlineButtonClickHandler 添加到 &lt;router-link&gt; 组件的 click 事件,以便我可以发出自定义 appSidebarInlineButtonClick 事件。

但是,我的代码不起作用。我究竟做错了什么?

<template>
   <router-link :to="to" @click="InlineButtonClickHandler">
      name 
   </router-link>
</template>

<script type="text/babel">
export default 
  props: 
    to:  type: Object, required: true ,
    name:  type: String, required: true 
  ,
  methods: 
    InlineButtonClickHandler(event) 
      this.$emit('appSidebarInlineButtonClick');
    
  
 
</script>

【问题讨论】:

可以显示控制台日志吗? 【参考方案1】:

您需要添加.native modifier:

<router-link
    :to="to"
    @click.native="InlineButtonClickHandler"
>
    name
</router-link>

这会监听router-link组件根元素的原生点击事件。

【讨论】:

v-on:click.native 现在已被弃用,根据我的阅读 鉴于“@click.native”在 Vue.js 3 中已弃用,另一种选择是使用样式为链接的按钮并在其 @click 方法中调用 this.$router.push( 路径:'to' ); @click.nativev-on:click.native 现在在新版本的 VueJS (>=3) 中已弃用,请改用 @click.prevent【参考方案2】:
<router-link:to="to">
    <span @click="InlineButtonClickHandler">name</span>
</router-link>

也许你可以试试这个。

【讨论】:

【参考方案3】:

在 vue 3 和 vue 路由器 4 中,@eventtag 属性根据this 被删除,您可以使用v-slot 代替它:

const Home = 
  template: '<div>Home</div>'

const About = 
  template: '<div>About</div>'

let routes = [
  path: '/',
  component: Home
, 
  path: '/about',
  component: About
, ]

const router = VueRouter.createRouter(
  history: VueRouter.createWebHashHistory(),
  routes,
)


const app = Vue.createApp(
  methods: 
    test() 
      console.log("test")
    
  
)

app.use(router)

app.mount('#app')
<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/vue-router@4"></script>

<div id="app">
  <h1>Hello App!</h1>
  <p>

    <router-link to="/" v-slot="navigate">
      <span @click="test" role="link">Go to Home</span>
    </router-link>
    <br/>
    <router-link to="/about">Go to About</router-link>
  </p>

  <router-view></router-view>
</div>

【讨论】:

以上是关于vuejs v-on="click"为啥会刷新页面的主要内容,如果未能解决你的问题,请参考以下文章

vuejs template click怎么直接传递this

v-on="..." 语法在 VueJS 中是啥意思?

vue教程1-04 事件 v-on:click="函数"

VueJS 基础知识及项目总结

如何在 vuejs 中隔离父元素和子元素之间的单击事件处理程序

VueJS TypeError无法读取属性