问题将复选框创建为 Vue 组件,特此:复选框组件内部不允许有逻辑:所有事件处理程序和checked属性都完全依赖于外部逻辑,可能是vuex存储。我们不应该观察复选框“已检查”的状态:是否选中,再次取决于外部逻辑,例如vuex状态或 getter。尝试 1概念复选框组件具有checked和onClick属性,其值当然可以是动态的。成分Pug语言模板:label.SvgCheckbox-LabelAsWrapper(:class="rootElementCssClass" @click.prevent="onClick") input.SvgCheckbox-InvisibleAuthenticCheckbox( type="checkbox" :checked="checked" :disabled="disabled" ) svg(viewbox='0 0 24 24').SvgCheckbox-SvgCanvas path( v-if="!checked" d='M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3M19,5V19H5V5H19Z' ).SvgCheckbox-SvgPath.SvgCheckbox-SvgPath__Unchecked path( v-else d='M10,17L5,12L6.41,10.58L10,14.17L17.59,6.58L19,8M19,3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3Z' ).SvgCheckbox-SvgPath.SvgCheckbox-SvgPath__Checked span(v-if="text").SvgCheckbox-AppendedText {{ text }}import { Vue, Component, Prop } from 'vue-property-decorator';@Componentexport default class SimpleCheckbox extends Vue { @Prop({ type: Boolean, required: true }) private readonly checked!: boolean; @Prop({ type: Boolean, default: false }) private readonly disabled!: boolean; @Prop({ type: String }) private readonly text?: string; @Prop({ type: String }) private readonly parentElementCssClass?: string; @Prop({ type: Function, default: () => {} }) private readonly onClick!: () => void;}商店模块import { VuexModule, Module, Mutation } from "vuex-module-decorators";import store, { StoreModuleNames } from "@Store/Store";@Module({ name: StoreModuleNames.example, store, dynamic: true, namespaced: true })export default class ExampleStoreModule extends VuexModule { private _doNotPreProcessMarkupEntryPointsFlag: boolean = true; public get doNotPreProcessMarkupEntryPointsFlag(): boolean { return this._doNotPreProcessMarkupEntryPointsFlag; }
查看完整描述