vue项目,项目中有一些代码逻辑是相同的,写法也相同,我怎么把他封装成一个公用的方法,完成不同的功能。看我详细描述。

1、vue项目,其中在用户中心设置中调用本地接口这一块有很多相同之处,
2、例如:
在配置发送消息快捷键上,我们的接口有添加本地配置更新本地配置,当我要设置发送消息快捷键时,我需要判断一下如果本地有这个配置那么使用更新本地配置接口,在成功回调中也要做不同的操作。还有配置好友上线声音提醒等许多也是这样的操作,目前我是各自写个各自的,但是我觉得这样写有点重复搬砖的意思,我该怎优化我的代码。
3、

setSendMsgKey(action, val, keyName){
      console.log(action, 'action'); // action要调的接口名
      let tempVal = val;
      if(val == '0') tempVal = 'CTRL_ENTER';
      if(val == '1') tempVal = 'ENTER';
      let setSendMsgKeyCB = resp => {
        console.log(resp, '配置用户发送消息快捷键');
        if(resp.code == 0){
          this.$store.commit('SET_USER_LOCALCONFIG', { key: 'send_msg_key', value: tempVal });
          if(action == 'addLocalSetting') this.$store.commit('SET_USER_LOCALCONFIG', { key: keyName, value: true });
        }
      }
      if(action == 'addLocalSetting'){
        this.$Service.user.addLocalSetting(
          [{ key: 'send_msg_key', value: tempVal }],
          setSendMsgKeyCB
        )
      } else {
        this.$Service.user.updateLocalSetting(
          [{ key: 'send_msg_key', value: tempVal }],
          setSendMsgKeyCB
        )
      }
    },
阅读 3.3k
3 个回答

建议新建 util.js存放自定义公共方法, 需要的时候import调用

或者将方法定义在一个对象内

const utils = {
    setSendMsgKey(action, val, keyName) {}
}
Vue.prototype.utils = utils

调用

this.utils.setSendMsgKey(action, val, keyName)

1.封装成公共的方法,放到utils里,像楼上说的那样
2.扩展vue原型对象
3.mixins

把回调也作为参数传入

Vue.prototype.$setSendMsgKey= function(action, val, keyName,setSendMsgKeyCB){
    ...
}

以后用的时候用

this.$setSendMsgKey(.. , resp => {
    ...
})

是这个意思吗

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题