【问题标题】:why i can not update data using vuex module?为什么我不能使用 vuex 模块更新数据?
【发布时间】:2021-11-03 17:45:14
【问题描述】:

这是我的组件

     methods:{
         ...mapActions(['udpateUsers']),
         Update(userID){
             let formData = new FormData();
             formData.append('new_name',this.editUser.new_name);
             formData.append('_method', 'PUT');      
             let config = {
                 headers:{
                     'Content-Type':'multipart/form-data',         
                 }        
             }
             this.udpateUsers(userID,formData,config);
         }

当我点击更新按钮时,formData 无法发送到服务器,但是当我控制台它时,FormData 包含所有字段

这是我的模块

        mutations:{
             ADD_USER: (state,response)=>{
                 state.Users = response;
             },
             UPDATE_USERS: (state,response)=>{
                 state.Users = response;
             }
         },
         actions:{
             udpateUsers: ({commit},userID,formData,config)=>{  
                     http.put("/admin/update/"+userID,formData,config)
                     .then((response)=>{
                         commit("UPDATE_USERS",formData);  
                         console.log(response);
                     })
                     .catch((error)=>{
                         console.log(error.response);
                    })
             }
         }
     export default auth

我认为错误将是我的提交突变

【问题讨论】:

    标签: vue.js vue-component vuex vuex-modules vuex-module-decorators


    【解决方案1】:

    您不能将多个参数作为有效负载传递给 Vuex 操作。您需要将其全部包装在一个对象中并将其作为单个参数传递。

    udpateUsers: ({commit}, { userID, formData, config }) => {
        // send to backend
    }
    
    this.udpateUsers({ userID, formData, config });
    

    编辑:从 cmets 看来,您在 VueX 实现中使用的是 PUT 方法而不是 POST,这就是您的后端没有获取数据的原因。

    【讨论】:

    • udpateUsers: ({commit},{userID,formData,config})=>{ http.put("/admin/update/"+userID,formData,config) .then((response) =>{ commit("UPDATE_USERS",formData,config); console.log(response); }) .catch((error)=>{ console.log(error.response); }) }
    • this.udpateUsers({userID,formData,config});
    • 在后端我将返回所有请求但未找到数据
    • {data: Array(0), status: 200, statusText: 'OK', headers: {...}, config: {...}, ...} config: {url: '/admin/update /47',方法:'put',数据:FormData,标题:{...},baseURL:'localhost:8000/api',...} 数据:[] 标题:{cache-control:'no-cache,private',内容-type: 'application/json'} request: XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, upload: XMLHttpRequestUpload, onreadystatechange: ƒ, ...} status: 200 statusText: "OK" [[Prototype]]: Object
    • 当我尝试不使用 vuex 时它工作正常
    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2019-10-05
    • 2020-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多