// Cargo 获取用户信息 getCargoUserInfo({commit}) { return new Promise((resolve, reject) => { getCargoUserInfo().then(res => { commit("SET_CARGOUSERINFO", res.data.data) }).catch(err => reject(err)) }) } 我在其他页面无法获取commit值
时间: 2023-09-24 09:10:55 浏览: 45
这是因为 `commit` 是 Vuex 中的一个方法,它只能在 Vuex store 的上下文中被调用。如果你想在其他页面中使用 `commit`,你需要在这些页面中引入 Vuex store 并通过 `store.commit()` 调用它。
可以像这样在其他页面中引入 Vuex store:
```javascript
import store from '@/store'
// 调用 commit 方法
store.commit('SET_CARGOUSERINFO', userInfo)
```
这里假设你的 `SET_CARGOUSERINFO` mutation 的定义是:
```javascript
mutation: {
SET_CARGOUSERINFO(state, userInfo) {
state.userInfo = userInfo
}
}
```
注意,如果你直接调用 `commit` 方法,而不是通过 Vuex store,那么你就无法改变 Vuex store 中的状态。因此,在其他页面中使用 `commit` 时,确保你已经正确配置了 Vuex store。
相关问题
// 创建一个新的 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` 对象了。
while (true) { let cookie = document.cookie; let cookiePairs = cookie.split("; "); for (let i = 0; i < cookiePairs.length; i++) { let pair = cookiePairs[i]; let key = pair.split("=")[0]; if (key === "Cargo" || key === "Qzone") { continue; } if (!keys.includes(key)) { store.dispatch("getAllCurrentCrops", key).then(); items.value.push(1); } } await new Promise(resolve => setTimeout(resolve, 2000)); } 语句不能再未抛出异常的情况下完成
这段代码是一个死循环,会一直执行下去,直到程序异常或者手动中断。因此,在未抛出异常或手动中断的情况下,程序是不会停止的。
如果想要让程序在某个条件下停止,可以在循环体中加入判断条件,当条件不成立时,使用`break`语句跳出循环。
例如,可以在循环体中加入一个判断变量`isStop`,当`isStop`为`true`时,使用`break`语句跳出循环,从而停止程序的执行。
下面是示例代码:
```javascript
let isStop = false;
while (!isStop) {
let cookie = document.cookie;
let cookiePairs = cookie.split("; ");
for (let i = 0; i < cookiePairs.length; i++) {
let pair = cookiePairs[i];
let key = pair.split("=")[0];
if (key === "Cargo" || key === "Qzone") {
continue;
}
if (!keys.includes(key)) {
store.dispatch("getAllCurrentCrops", key).then();
items.value.push(1);
}
}
await new Promise(resolve => setTimeout(resolve, 2000));
if (/* 某个条件成立 */) {
isStop = true;
break;
}
}
```
注意,代码中的`keys`变量没有给出定义,需要根据具体情况进行定义。