JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.min.js"></script>
<div id="app">
  <app-checkbox
    v-for="category in categories"
    name="categories[]"
    :value="category.value"
    v-model="checked">
    {{ category.label }}
  </app-checkbox>
  <pre>{{ checked }}</pre>
</div>

JavaScript

Vue.component('app-checkbox', {
  model: {
    prop: 'checked',
    event: 'change',
  },
  props: ['name', 'value', 'checked'],
  template: `
<label>
  <input 
    type="checkbox" 
    :name="name" 
    :value="value" 
    v-model="model" 
  >
  <slot></slot>
</label>`,
  computed: {
    model: {
      get() {
        return this.checked;
      },
      set(val) {
        this.$emit('change', val);
      },
    },
  },
});

new Vue({
	el: '#app',
  data: {
  	categories: [
    	{ label: 'Категория 1', value: 1 },
      { label: 'Категория 2', value: 2 },
      { label: 'Категория 3', value: 3 },
    ],
    checked: [2],
  },
});