如果我像这样在 vue 组件中使用 ajax:
有用。我成功拿到文件
但在这里我想使用 vuex 商店
我的 vuex 商店模式是这样的:
我像这样更改我的 vue 组件:
<template>
<div>
...
</div>
</template>
<script>
export default {
methods: {
submitForm() {
...
formData.append('file', files)
this.updateProfile({formData, reload: true})
}
}
}
</script>
在组件vue中,它会调用modules user中的updateProfile方法
像这样的模块用户:
import { set } from 'vue'
import users from '../../api/users'
import * as types from '../mutation-types'
// initial state
const state = {
addStatus:null
}
// getters
const getters = {
updateProfileStatus: state => state.addStatus,
}
// actions
const actions = {
updateProfile ({ dispatch,commit,state },{user,reload})
{
users.updateProfile(user,
response => {
commit(types.UPDATE_PROFILE_SUCCESS)
},
errors => {
commit(types.UPDATE_PROFILE_FAILURE)
}
)
}
}
// mutations
const mutations = {
[types.UPDATE_PROFILE_SUCCESS] (state){
state.addStatus = 'success'
},
[types.UPDATE_PROFILE_FAILURE] (state){
state.addStatus = 'failure'
}
}
export default {
state,
getters,
actions,
mutations
}
从模块用户,它将调用 api 用户中的 updateProfile 方法
api用户是这样的:
import Vue from 'vue'
export default {
updateProfile(user, cb, ecb = null) {
axios.post('/member/profile/update', user)
.then(response => cb(response))
.catch(error => ecb(error))
}
}
所以我的模式就是这样。所以我正在使用 vuex 商店的模式
我的问题是我仍然对发送文件数据感到困惑
如果我console.log(user)
在模块用户的 updateProfile 方法中,结果是undefined
如何使用 vuex 存储发送文件数据?