未知操作类型:currentUser/loginUser
unknown action type: currentUser/loginUser
我正在尝试使用 laravel/vuejs/vuex 构建一个登录表单
但是当我尝试执行操作时遇到错误
在我的组件中,我试图从一个模块执行一个 vuex 动作,但我收到了一个错误
未知操作类型:currentUser/loginUser
这是登录表单:
<template>
<div>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" v-model="user.email" id="exampleInputEmail1" aria-
describedby="emailHelp">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" v-model="user.password"
id="exampleInputPassword1">
</div>
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" @click="login" class="btn btn-primary">Submit</button>
< /div>
</template>
<script>
export default{
data:()=>({
user:{
email:"",
password:""
}
}),
methods: {
login(){
this.$store.dispatch('currentUser/loginUser',this.user);
}
}
}
</script>
和这个 currentUser.js:
import axios from "axios";
const state ={
user:{
}
};
const getters= {};
const actions = {
loginUser({},user){
axios.post("/login",{
email: user.email,
password: user.password
})
.then(response=>{
console.log(response.data);
})
}
};
const mutations={};
export default{
namespaced:true,
state,
getters,
actions,
mutations
}
我在我的代码中遇到了同样的问题。
首先要检查您是否有错别字。 (很多时候这是真的)。
下一步你应该检查你是否已经注册了模块。
在你的情况下,我没有看到正在注册的模块。
这就是你的做法。
在创建的钩子中(你可以根据你使用的版本查看官方文档中有哪些钩子)我们像这样注册模块。
created () {
// Register Module EmployeeManagement Module
if (!moduleEmployeesManagement.isRegistered) {
this.$store.registerModule('employeesManagement', moduleEmployeesManagement)
moduleEmployeesManagement.isRegistered = true
}
}
你的情况应该是这样的
也将其添加到您的代码中
import currentUser from "./modules/currentUser"
...// rest of your code
...// under the methods
created () {
// Register Module Login
if (!currentUser.isRegistered) {
this.$store.registerModule('currentUser', currentUser)
currentUser.isRegistered = true
}
}
我认为这会解决您的问题。这对我有用。
一些小技巧:
- 发帖时格式化代码
- 保持最小值,//只有我们应该看到的错误
- 添加任何必要的内容(您的情况下缺少导入,您现在可以编辑并添加它)
- 要像
loginUser
那样跳过对象用法,请使用像这样的下划线 loginUser(_,data)
- 在新文件中分离你的动作 getter 突变等并导入
它们在主模块文件中
- 您可以参考更多编码标准以获得更易于维护的代码。
我正在尝试使用 laravel/vuejs/vuex 构建一个登录表单
但是当我尝试执行操作时遇到错误
在我的组件中,我试图从一个模块执行一个 vuex 动作,但我收到了一个错误
未知操作类型:currentUser/loginUser
这是登录表单:
<template>
<div>
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" v-model="user.email" id="exampleInputEmail1" aria-
describedby="emailHelp">
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" v-model="user.password"
id="exampleInputPassword1">
</div>
<div class="form-group form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">Check me out</label>
</div>
<button type="submit" @click="login" class="btn btn-primary">Submit</button>
< /div>
</template>
<script>
export default{
data:()=>({
user:{
email:"",
password:""
}
}),
methods: {
login(){
this.$store.dispatch('currentUser/loginUser',this.user);
}
}
}
</script>
和这个 currentUser.js:
import axios from "axios";
const state ={
user:{
}
};
const getters= {};
const actions = {
loginUser({},user){
axios.post("/login",{
email: user.email,
password: user.password
})
.then(response=>{
console.log(response.data);
})
}
};
const mutations={};
export default{
namespaced:true,
state,
getters,
actions,
mutations
}
我在我的代码中遇到了同样的问题。
首先要检查您是否有错别字。 (很多时候这是真的)。
下一步你应该检查你是否已经注册了模块。
在你的情况下,我没有看到正在注册的模块。 这就是你的做法。
在创建的钩子中(你可以根据你使用的版本查看官方文档中有哪些钩子)我们像这样注册模块。
created () {
// Register Module EmployeeManagement Module
if (!moduleEmployeesManagement.isRegistered) {
this.$store.registerModule('employeesManagement', moduleEmployeesManagement)
moduleEmployeesManagement.isRegistered = true
}
}
你的情况应该是这样的 也将其添加到您的代码中
import currentUser from "./modules/currentUser"
...// rest of your code
...// under the methods
created () {
// Register Module Login
if (!currentUser.isRegistered) {
this.$store.registerModule('currentUser', currentUser)
currentUser.isRegistered = true
}
}
我认为这会解决您的问题。这对我有用。
一些小技巧:
- 发帖时格式化代码
- 保持最小值,//只有我们应该看到的错误
- 添加任何必要的内容(您的情况下缺少导入,您现在可以编辑并添加它)
- 要像
loginUser
那样跳过对象用法,请使用像这样的下划线loginUser(_,data)
- 在新文件中分离你的动作 getter 突变等并导入 它们在主模块文件中
- 您可以参考更多编码标准以获得更易于维护的代码。