Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更新用户配置文件后无法获取最新数据(vue.js 2、vuex、laravel 8)_Vue.js_State_Vuex_Laravel 8 - Fatal编程技术网

更新用户配置文件后无法获取最新数据(vue.js 2、vuex、laravel 8)

更新用户配置文件后无法获取最新数据(vue.js 2、vuex、laravel 8),vue.js,state,vuex,laravel-8,Vue.js,State,Vuex,Laravel 8,我是VueX的新手。我面临一个问题,在我更新配置文件信息并成功保存后,数据库显示了最新更新的信息,但用户界面无法检索最新数据。国家似乎没有更新 我的个人资料界面 但在更新后,所有的信息都消失了,没有显示最新的信息 UserProfile.vue <template> <div class="container" style="padding-top:25px"> <div class="main-font

我是VueX的新手。我面临一个问题,在我更新配置文件信息并成功保存后,数据库显示了最新更新的信息,但用户界面无法检索最新数据。国家似乎没有更新

我的个人资料界面

但在更新后,所有的信息都消失了,没有显示最新的信息

UserProfile.vue

<template>
<div class="container" style="padding-top:25px">
    <div class="main-font">My Profile</div>
    <div class="d-flex row">
        <div class="col-6">
            <ValidationObserver v-slot="{ handleSubmit }">
                <form @submit.prevent="handleSubmit(updateProfile)">
                    <div class="d-flex py-4">                       
                        <div>                                
                            <img class="profile" src="/img/default.png" alt=""                               
                        </div>
                        <div class="my-auto ml-5">
                            <button type="submit" class="btn upload text"><i class="fas fa-upload fa-sm pr-2"></i>Upload new picture</button>
                        </div>
                    </div>
                    <div class="form-group col-10 p-0 m-0">
                        <ValidationProvider name="Name" rules="required|alpha" v-slot="{ errors }">
                            <label  class="text">Name</label>
                            <input type="text" id="name" class="form-control form-text" placeholder="Enter your username" v-model="userForm.name">
                            <span class="error-messsage">{{ errors[0] }}</span>
                        </ValidationProvider>
                        <!-- <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small> -->
                    </div>
                    <div class="form-group col-10 p-0 m-0 mt-4">
                        <ValidationProvider name="E-mail" rules="required|email" v-slot="{ errors }">
                            <label class="text">Email</label>
                            <input type="email" id="email"  class="form-control form-text" placeholder="Enter email" v-model="userForm.email">
                            <span class="error-messsage">{{ errors[0] }}</span>
                        </ValidationProvider>
                    </div>
                    <button type="submit" class="btn col-10 p-o save-but">SAVE CHANGES</button>
                </form>
            </ValidationObserver>
        </div>
        <div class="w-50">
            <img class="bg-img" src="/img/profile-bg.png" alt="">
        </div>
    </div>
</div>
auth.js

import {getLoggedinUser} from './auth';
import {getUser} from './auth';
const user = getLoggedinUser();
const updateUser = getUser();

export default {
    state: {
        currentUser: user,
        isLoggedin: !!user,
        loading: false,
        auth_error: null,
        reg_error:null,
        registeredUser: null,
        update: null,
    },
    getters: {
        isLoading(state){
        return state.loading;
        },
        isLoggedin(state){
            return state.isLoggedin;
        },
        currentUser(state){
            return state.currentUser;
        },
        authError(state){
            return state.auth_error;    
        },
        regError(state){
            return state.reg_error;
        },
        registeredUser(state){
            return state.registeredUser;
        },
        update(state){
            return state.update;
        }
    },
    mutations: {
        login(state){
            state.loading = true;
            state.auth_error = null;
        },
        loginSuccess(state, payload){
            state.auth_error = null;
            state.isLoggedin = true;
            state.loading = false;
            state.currentUser = Object.assign({}, payload.user , {token: payload.access_token});
            localStorage.setItem("user", JSON.stringify(state.currentUser));
        },
        loginFailed(state, payload){
            state.loading = false;
            state.auth_error = payload.error;
        },
        logout(state){
            localStorage.removeItem("user");
            state.isLoggedin = false;
            state.currentUser = null;
        },
        registerSuccess(state, payload){
            state.reg_error = null;
            state.registeredUser = payload.user;
        },
        registerFailed(state, payload){
            state.reg_error = payload.error;
        },
        update(state, payload) {
            state.currentUser = payload.data;      
        }
    },
    actions: {
        login(context){
            context.commit("login");
        },
        // update(context){
        //     // state.currentUser.update(context);
        // }

    }
};
export function registerUser(credentials){
  return new Promise((res,rej)=>{
      axios.post('/api/auth/register', credentials)
      .then(response => {
          res(response.data);
      })
      .catch(err => {
          rej('An error occured.. try again later.')
      })
  })
}

export function login(credentials){
  return new Promise((res,rej)=>{
      axios.post('/api/auth/login', credentials)
      .then(response => {
            setAuthorization(response.data.access_token);
            res(response.data);
      })
      .catch(err => {
          rej('Wrong Email/Password combination.')
      })
  })
}

export function getLoggedinUser(){
  const userStr = localStorage.getItem('user');

  if(!userStr){
      return null
  }

  return JSON.parse(userStr);
}

export function getUser(credentials){
  return new Promise((res,rej)=>{
    axios.get('/api/auth/userprofile', credentials)
    .then(response => {
          // setAuthorization(response.data.access_token);
          res(response.data);
    })
    .catch(err => {
        rej('No User')
    })
})
}

如果您有任何想法或解决方案,请帮助我。

您的店铺没有任何派送

您已经定义了
update
mutation,但对其进行了注释

取消对此的注释

//此.$store.commit('update'))
并对其进行如下修改:

this.$store.commit('update',{data:response.data})

接下来,对您的登录请求执行同样的操作。

您好,很抱歉响应太晚。如果您方便的话,请您指导我在store.js中应该做什么?因为我仍然对它感到困惑。请参考,vuex代码来自教程网站,但我仍然不熟悉它。
export function registerUser(credentials){
  return new Promise((res,rej)=>{
      axios.post('/api/auth/register', credentials)
      .then(response => {
          res(response.data);
      })
      .catch(err => {
          rej('An error occured.. try again later.')
      })
  })
}

export function login(credentials){
  return new Promise((res,rej)=>{
      axios.post('/api/auth/login', credentials)
      .then(response => {
            setAuthorization(response.data.access_token);
            res(response.data);
      })
      .catch(err => {
          rej('Wrong Email/Password combination.')
      })
  })
}

export function getLoggedinUser(){
  const userStr = localStorage.getItem('user');

  if(!userStr){
      return null
  }

  return JSON.parse(userStr);
}

export function getUser(credentials){
  return new Promise((res,rej)=>{
    axios.get('/api/auth/userprofile', credentials)
    .then(response => {
          // setAuthorization(response.data.access_token);
          res(response.data);
    })
    .catch(err => {
        rej('No User')
    })
})
}