vue checkbox实现原理
Vue Checkbox 实现原理
Vue 中的复选框(Checkbox)实现依赖于双向数据绑定(v-model)和原生 HTML 的 <input type="checkbox"> 元素。核心原理是通过数据驱动视图,将复选框的状态与 Vue 实例的数据属性绑定。
基础实现
-
单选框绑定
通过v-model绑定一个布尔值,控制复选框的选中状态:<template> <input type="checkbox" v-model="isChecked"> </template> <script> export default { data() { return { isChecked: false } } } </script>isChecked为true时复选框选中,反之未选中。- 用户操作会同步更新
isChecked的值。
-
多选框组绑定
绑定到数组时,复选框的value属性会被添加到数组或从数组中移除:
<template> <input type="checkbox" v-model="selectedFruits" value="apple"> <input type="checkbox" v-model="selectedFruits" value="banana"> </template> <script> export default { data() { return { selectedFruits: [] } } } </script>- 选中复选框时,其
value会加入selectedFruits数组。 - 取消选中时,
value从数组中移除。
- 选中复选框时,其
底层机制
-
v-model语法糖v-model本质是:checked和@change的简写:<input type="checkbox" :checked="isChecked" @change="isChecked = $event.target.checked" > -
自定义复选框组件
封装组件时需手动实现modelValue和update:modelValue:
<template> <input type="checkbox" :checked="modelValue" @change="$emit('update:modelValue', $event.target.checked)" > </template> <script> export default { props: ['modelValue'] } </script>
特殊处理
-
true-value和false-value
可自定义选中/未选中时绑定的值:<input type="checkbox" v-model="toggle" true-value="yes" false-value="no" >- 选中时
toggle为"yes",取消选中为"no"。
- 选中时
-
修饰符
.lazy:将input事件改为change事件触发更新。.number:将输入值转为数字。
注意事项
- 多选框组需确保
v-model绑定的是数组。 - 动态生成复选框时,
value需唯一以避免状态冲突。 - 自定义组件需正确处理
modelValue和事件。






