【发布时间】:2021-04-11 05:21:51
【问题描述】:
我最近一直在尝试学习 Vuex,以便在路由之间导航时不会丢失我的数据和未完成的表单数据。在 Vuex 的页面中,有一个关于递增和递减值的简单管理示例,但我无法根据我的需要调整这个示例。我有一个简单的组件,它从用户那里获取用户名和密码。由于我将在我的项目中到处使用此方法,因此我想在复选框、选择元素以及通常所有表单元素中使用此方法。假设用户输入了用户名输入并留下密码并在不同的路由、组件之间导航并返回到第一个组件。我希望用户名输入字段填写用户之前输入的内容。我认为我需要双向数据绑定,因为我还对项目中的每个输入元素进行了一些验证,并且它们都与具有 v-model 的唯一数据相关联。
我尝试创建 store.js 文件和其中的状态。当我将状态声明为username 并将其设置为像“Jason”这样的静态时,我可以在我的组件中将它用作this.$store.state.username 但这是我的问题;如何设置
state : {
username: 'Jason'
}
动态的东西,每次输入用户名输入字段时它都会改变。这是我输入的用户名;
<input v-model="userData.username" type="text" />
data() {
return {
userData: {
username: "",
},
};
},
当用户键入内容时,用户名会在数据中更新。我希望它在 Vuex 中的状态发生变化,因此即使路由或组件发生了变化,我也可以在返回时使用该数据。我不确定我是否正确理解了用法。我错过了什么吗?你能帮助我吗?提前致谢!
Store.js
state:{
cloud_user:""
},
mutations:{
set_userName(state, val){
state.cloud_user = val
}
}
计算
computed: {
set_username:{
set(val){
this.$store.commit("set_username", val)
},
get(){
return this.$store.state.username
}
}
}
目前我遇到以下错误
[Vue warn]: Method "computed" has type "object" in the component definition. Did you reference the function correctly?
另外,还有这个错误;
[Vue warn]: Property or method "set_username" is not defined on the instance but referenced during render.
【问题讨论】:
标签: vue.js vuex vue-router v-model