You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VueJS中结合Vuex的Form类Getter/Setter实现技术咨询

Vuex 联动的表单类实现

我自己写了一个Form类,专门用来处理和Vuex存储联动的表单字段——给表单可能包含的每个字段都设置了对应的getter和setter方法,在这些方法里直接完成对Vuex存储的读写操作。其中init()函数是批量设置这些getter/setter的核心方法,具体实现如下:

export class Form {
  /**
   * @param data
   */
  constructor(data) {
    this.init(data);
    this.errors = new Errors();
  }
  /**
   * 为字段初始化设置getter/setter属性
   * @param data
   */
  init(data) {
    for (const propertyData in data) {
      if (data.hasOwnProperty(propertyData) && /* 这里可补充字段有效性判断逻辑 */) {
        // 为每个字段动态绑定关联Vuex的getter和setter
        Object.defineProperty(this, propertyData, {
          get() {
            // 从Vuex读取对应字段的状态值
            return store.state.form[propertyData];
          },
          set(value) {
            // 将新值提交到Vuex更新状态
            store.commit('updateFormField', { field: propertyData, value });
          }
        });
      }
    }
  }
}

关键逻辑说明

  • 构造函数:接收表单初始数据后,先调用init()完成字段的getter/setter绑定,同时初始化错误处理实例errors,方便后续做表单校验逻辑
  • init()方法:通过遍历传入的字段数据,利用Object.defineProperty为每个字段动态创建getter和setter,直接和Vuex的状态进行绑定——这样操作Form实例的字段时,就会自动同步到Vuex存储中,不用手动调用Vuex的提交方法

内容的提问来源于stack exchange,提问作者therabbityouknow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:13:46