똑같은 삽질은 2번 하지 말자

Vue.js 에서 처리중일때는 해당 버튼 무효화 하기(두번 이상의 클릭을 했을때, 한번의 서비스만 처리하기 위해) 본문

Vue

Vue.js 에서 처리중일때는 해당 버튼 무효화 하기(두번 이상의 클릭을 했을때, 한번의 서비스만 처리하기 위해)

곽빵 2020. 8. 5. 23:32

disabled 이용

<button v-bind:disabled="isProcessing" @click="submit">何かしら処理する</button>

mixins/index.js

export default {
  data() {
    return {
      processing: false
    }
  },
  methods: {
    startProcessing: function () {
      this.processing = true
    },
    endProcessing: function () {
      this.processing = false
    },
    isProcessing: function () {
      return this.processing
    }
  }
}

컴포넌트(적용하고 싶은).vue

<template>
  <div>
    <button v-bind:disabled="isProcessing()" @click="submit">何かしら処理する</button>
    <p>※押すと2秒間ロックされます</p>
  </div>
</template>

<script>
import Processing from '@/mixins/index.js'

export default {
  mixins: [Processing],
  name: 'articleRegister',
  methods: {
    submit: function () {
      // ボタンのロックを開始する
      this.startProcessing()

      // 何かしらの処理...

      // 2秒待つのは、Ajaxなどの処理を擬似的に表現しています
      setTimeout(function () {
      
        this.endProcessing() // ボタンのロックを解除する
      }.bind(this), 2000)
    }
  }
}
</script>

'Vue' 카테고리의 다른 글

Nuxt 정리 No.1  (0) 2021.02.28
Vue.js data가 함수여야 하는 경우  (0) 2020.11.22
render: h => h(App)  (0) 2020.07.31
Vuex 소개, Flux패턴, Vuex가 필요한 이유,Vuex의 구조  (0) 2020.06.26
Vue.js 끝내기 No.14(테스트,Jest)  (0) 2020.05.30
Comments