vue中使用扩展运算符为axios.defaults赋值出错

import qs from 'querystring'
let config = {
  transformRequest: [function (data) {
    return qs.stringify(data)
  }],
}

自己配置了一个默认配置对象,然后在全局对axios进行默认配置Vue.http.defaults = Object.assign(Vue.http.defaults, config)
这样子写的话transformRequest能正确运行我设置的默认配置,但是如果用
Object.assign({}, Vue.http.defaults, config)或者{...Vue.http.defaults, ...config}的话,结果跑的是axios自己的默认配置,那么这两种赋值方法的区别是在哪呢?

阅读 2.7k
1 个回答

Object.assign()是一重深度的深拷贝
第一个方法没有改变vue.http.defaults实例,
返回的还是vue.http.defaults对象

Object.assign({}, Vue.http.defaults, config)或者{...Vue.http.defaults, ...config}
返回了一个全新的对象{},这个对象和axios.defaults完全没有任何关系了

具体请见 MDN关于 object.assign()的文档


不知道了!

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