actions: { Login({ commit }, userInfo) { return new Promise((resolve, reject) => { postAction("/sys/login", userInfo).then(response => { if (response.data["code"] === 200) { const result = response.data["result"]; Vue["ls"].set("X-Access-Token", result.token, 7 * 24 * 60 * 60 * 1000); console.log(Vue["ls"],'66666666666666') commit("SET_TOKEN", result.token); resolve(response); } else { reject(response); } }).catch(error => { reject(error); }); }); } }
时间: 2023-03-02 09:16:40 浏览: 478
这段代码是一个Vue.js的actions对象,其中定义了一个名为Login的方法。Login方法接收两个参数,一个commit对象和一个userInfo对象。
Login方法返回一个Promise对象,这个Promise对象中有一个postAction方法,用来发起一个HTTP POST请求,请求的URL是“/sys/login”,请求的数据是userInfo对象。当请求成功时,如果response中的code属性值为200,就会将返回结果中的token存储在Vue["ls"]中,同时commit一个名为SET_TOKEN的mutation方法,并将结果返回resolve方法中;否则返回reject方法。当请求失败时,直接返回reject方法。
注:这段代码的具体实现依赖于Vue.js和第三方库。
相关问题
const actions = { login({commit}, param) { return new Promise((resolve, reject) => { login({ iv: param.iv, // 请求参数(可自行修改) code: param.code // 请求参数(可自行修改) }).then(response => { // 这里可以自己添加方法 // 保存获取到的token到本地之类的 // 必须在resolve之前执行 setToken(response.token) //将获取到的token保存到本地 resolve(response) }).catch(error => { console.log(error) }) }) } };解释一下这段代码
这段代码是一个Vuex中的actions对象,其中包含了一个名为login的action。这个action接收了一个参数param,其中包含了iv和code两个属性。在这个action中,我们执行了一个异步操作,即调用login方法,并将iv和code作为参数传递给它。login方法返回一个Promise对象,我们在这个Promise对象中添加了一个then方法和一个catch方法。
在then方法中,我们首先可以执行一些自定义的操作,例如将获取到的token保存到本地。然后,我们调用resolve方法,将获取到的响应数据response作为参数传递给它。这样,这个Promise对象就会被标记为已完成,并将响应数据传递给调用该action的代码。
在catch方法中,我们只是简单地将错误打印到控制台。
总之,这段代码的作用是在异步获取login方法的响应数据后,将其通过Promise对象的resolve方法传递给调用该action的代码。
// 创建一个新的 store 实例 const store = createStore({ state() { return { // Cargo 存储用户信息 cargoUserInfo: {}, // Qzone QQ空间数据 qzoneUserInfo: {} } }, mutations: { // Cargo 记录用户信息 SET_CARGOUSERINFO(state, cargoUserInfo) { state.cargoUserInfo = cargoUserInfo }, // Qzone 登录数据 SET_QZONEUSERINFO(state, qzoneUserInfo) { state.qzoneUserInfo = qzoneUserInfo } }, actions: { // Cargo 账号登录 loginCargo({commit}, {username, password}) { return new Promise((resolve, reject) => { loginCargo(username, password).then(res => { setCargoToken(res.data.data) resolve(res.data.code) }).catch(err => reject(err)) }) }, // Cargo 获取用户信息 getCargoUserInfo({commit}) { return new Promise((resolve, reject) => { getCargoUserInfo().then(res => { commit("SET_CARGOUSERINFO", res.data.data) }).catch(err => reject(err)) }) }, // Qzone 登录QQ控件 loginQzone({commit}, {qNum, ptToken}) { return new Promise((resolve, reject) => { LoginQzone(qNum, ptToken).then(res => { let userinfo = { 'qq': ${qNum}, 'cookies': ${res.data.data} } console.log(userinfo) commit('SET_QZONEUSERINFO', userinfo) resolve(res.data) }) }) } } }) SET_QZONEUSERINFO赋值失败
这段代码中 `SET_QZONEUSERINFO` 方法的赋值是有问题的,因为 `${qNum}` 和 `${res.data.data}` 应该被包裹在引号中,例如:
```
let userinfo = {
'qq': `${qNum}`,
'cookies': `${res.data.data}`
}
```
这样就可以成功地创建一个包含 `qq` 和 `cookies` 属性的 `userinfo` 对象了。
阅读全文