一個(gè)bug送給有緣人:
場(chǎng)景:
由于自己寫(xiě)的以及element-ui的button樣式效果不夠優(yōu)秀,于是從網(wǎng)上down了一個(gè)效果極佳的button組件,但是 每點(diǎn)擊一下button,都會(huì)導(dǎo)致我的路由上多了一個(gè)?號(hào)
點(diǎn)擊前:
0.png
點(diǎn)擊后:
1.png
檢查代碼都沒(méi)有任何問(wèn)題,代碼如下:
// main.js
import MButton from '@/components/button'
Vue.use(MButton);
// @/components/button/button.vue
<template>
<button type="button" class="m-button"
@click="handleClick"
:disabled="disabled"
:class="[
type && 'm-button-' + type,
size && 'm-button-' + size,
{
'm-button-type-plain': plain,
'm-button-rounded': round,
'm-button-block': block,
'active': active,
'clicked': (effect && clicked && !active)
}
]"
>
<slot></slot>
</button>
</template>
handleClick() {
this.$emit('click')
}
// @/components/button/index.js
import MButton from './button'
MButton.install = function (Vue) {
Vue.component(MButton.name, MButton)
}
export default MButton
最后才發(fā)現(xiàn),是由于button有一個(gè)默認(rèn)的submit事件,雖然不知道改變路由的原理是什么,但是知道是因?yàn)檫@個(gè)submit事件導(dǎo)致的,接下來(lái)只要去掉這個(gè)submit事件就好了
// 加上type='button' 就好了
<button type="button">