不可用this.$store.mutations.xxx(xx)方式调用mutations的方法,
在main.js中调用mutations方法:
你不能直接调用一个 mutation handler。这个选项更像是事件注册:“当触发一个类型为 increment
的 mutation 时,调用此函数。”要唤醒一个 mutation handler,你需要以相应的 type 调用 store.commit 方法
提交载荷(Payload)
你可以向 store.commit
传入额外的参数,即 mutation 的 载荷(payload):
// ...
mutations: {
increment (state, n) {
state.count += n
}
}
store.commit('increment', 10)
例如:
uni.request({
url: 'https:~~~~~'+ opt.url,
data: opt.data,
method: opt.method,
header:{'token':Token},
//header:{'token':Token},
dataType: 'json',
success:async function (res) {
if(res.data.code==500000||res.data.code==500001){
uni.navigateTo({
url:'/pages/user/authorize'
})
}else{
let aa = await manyRequest()
store.commit('login', aa.data.data)
console.log('即时方法:',aa);
opt.success(res);
}
},
fail: function (res) {
console.log(res);
}
})
提交荷载有两种方式:
// 把载荷和type分开提交
store.commit('increment', {
amount: 10
})
// 整个对象都作为载荷传给mutation函数
store.commit({
type: 'increment',
amount: 10
})
tips:
import { mapMutations } from 'vuex'
export default {
methods: {
...mapMutations([
'increment', // 将 `this.increment()` 映射为 `this.$store.commit('increment')`
// `mapMutations` 也支持载荷:
'incrementBy' // 将 `this.incrementBy(amount)` 映射为 `this.$store.commit('incrementBy', amount)`
])
}
}
我的vue页面使用vuex写法:
import { mapState ,mapMutations} from 'vuex';
computed: {
...mapState(['hasLogin','userInfo'])
},
methods: {
...mapMutations(['login']),
}