vue.js - 观察者回调错误“function () { return this._data.$$state }”
问题描述
每次在我的字段中输入一个字符时,我都会收到此错误。例如,我的手机上有数据:123,当我添加一个号码时,每次添加内容时都会出现此错误。[Vue 警告]:观察者“function () { return this._data.$$state }”的回调出错:“错误:[vuex] 不要在突变处理程序之外改变 vuex 存储状态。” (在 中找到)和这个错误:[vuex] 不要在突变处理程序之外改变 vuex 存储状态。这是我的编辑代码:
<template>
<div>
<!-- Dashboard start -->
<sideBar></sideBar>
<div class="dashboard submit-property">
<div class="container-fluid">
<div class="row">
<div class="dashboard-nav">
<div class="dashboard-inner">
<h4>main</h4>
<p></p>
<h4>Listings</h4>
<ul>
<li><a href="/bookings"><i class="flaticon-calendar"></i> Bookings</a></li>
<li><a href="/my-properties"><i class="flaticon-empire-state-building"></i>My Properties</a></li>
<li class="active"><a href="/submit-property"><i class="flaticon-plus"></i>Submit Property</a></li>
</ul>
<h4>Account</h4>
<ul>
<li><a href="/my-profile"><i class="flaticon-male"></i>My Profile</a></li>
<li><a href="/"><i class="flaticon-logout"></i>Logout</a></li>
</ul>
</div>
</div>
<div class="dashboard-content">
<div class="dashboard-header clearfix">
<div class="row">
<div class="col-sm-12 col-md-5"><h4>Submit Property</h4></div>
<div class="col-sm-12 col-md-7">
<div class="breadcrumb-nav">
<ul>
<li>
<a href="/index">Dashboard</a>
</li>
<li class="active">Submit Property</li>
</ul>
</div>
</div>
</div>
</div>
<div class="submit-address dashboard-list">
<form @submit.prevent="formSubmit">
<h4 class="bg-grea-3">Basic Information</h4>
{{ Rendezvous }}
<div class="search-contents-sidebar">
<div class="row pad-20">
<div class="col-lg-4 col-md-4 col-sm-12">
<div class="form-group">
<label>Email</label>
<input
v-model="Rendezvous.email"
placeholder="email"
type="text"
class="form-control"
/>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-12">
<div class="form-group">
<label>Phone</label>
<input
v-model="Rendezvous.phone"
placeholder="Phone"
type="text"
class="form-control"
/>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-12">
<div class="form-group">
<label>Details</label>
<input
v-model="Rendezvous.details"
placeholder="details"
type="text"
class="form-control"
/>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-12">
<div class="form-group">
<label>Day</label>
<input
type="date"
placeholder="day"
v-model="Rendezvous.day"
class="form-control"
/>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-12">
<div class="form-group">
<label>Start</label>
<input
placeholder="start"
v-model="Rendezvous.start"
type="time"
class="form-control"
/>
</div>
</div>
</div>
</div>
</form>
<div class="col-lg-4 col-md-12 col-sm-12">
<button type="submit" class="btn btn-md button-theme"
@click="updateApp()">
Submit
</button>
</div>
</div>
<p class="sub-banner-2 text-center">© 2021 Residena</p>
</div>
</div>
</div>
</div>
<!-- Dashboard end -->
</div>
</template>
<script>
import sideBar from "../../components/sideBar";
import Swal from "sweetalert2";
import Multiselect from "vue-multiselect";
import { mapGetters, mapActions } from "vuex";
/**
* Invoice-detail component
*/
export default {
// eslint-disable-next-line vue/no-unused-components
components: { sideBar,Multiselect },
data() {
return {
/* ownerprop: {
name: "",
type: "",
propertyCondition: "",
adress:"",
city: "",
zip: "",
Status: "",
totalArea:"",
numberRooms:"",
numberBathrooms:"",
floorNumber:"",
price:"",
yearBuilt:"",
description:"",
owner:""
}, */
submitted: true,
submit: true,
/* Rendezvous:{
details:'',
day:'',
start:'',
email:'',
phone:''
} */
};
},
computed: {
...mapGetters("rendezvousModule", ["rendezvouss"]),
Rendezvous() {
return this.rendezvouss.find((rendezvous) => rendezvous._id === this.id);
},
},
created() {
this.id = this.$route.params.id
// eslint-disable-next-line no-console
console.log("hello", this.getRendezvouss);
// eslint-disable-next-line no-console
console.log("employesssss", this.rendezvouss);
this.getRendezvouss();
},
methods: {
...mapActions("rendezvousModule", ["getRendezvouss"]),
// eslint-disable-next-line no-unused-vars
formSubmit(e) {
this.submitted = true;
// stop here if form is invalid
},
updateApp() {
this.submitted = true;
// stop here if form is invalid
// eslint-disable-next-line no-console
console.log('i am in form action')
this.$store.dispatch("rendezvousModule/updateRendezvous", {
_id:this.Rendezvous._id,
details: this.Rendezvous.details,
day: this.Rendezvous.day,
start: this.Rendezvous.start,
phone: Number(this.Rendezvous.phone),
email: this.Rendezvous.email,
}) .then(()=>{
// eslint-disable-next-line no-console
console.log('day',this.Rendezvous.day )
// eslint-disable-next-line no-console
console.log('email',this.Rendezvous.email )
this.$router.push("bookings")
})
Swal.fire("Done!", "Appointment updated successfully!", "success");
// eslint-disable-next-line no-console
console.log('Appointment updated');
}
},
};
</script>
这是我的更新突变:
UPDATE_RENDEZVOUS(state, payload) {
console.log("payload", payload);
const index = state.rendezvouss.findIndex(
rendezvous => rendezvous._id === payload._id
);
console.log("index", index);
Vue.set(state.rendezvouss, index, payload);
},
这是我的更新操作:
async updateRendezvous({ commit }, payload) {
try {
console.log("payloadddddd", payload);
console.log('i am inside try update action')
const { data } = await apolloClient.mutate({
mutation: UPDATE_RENDEZVOUS,
variables: payload
});
commit("UPDATE_RENDEZVOUS", data.updateRendezvous);
commit("setLoading", false);
} catch (error) {
commit('setLoading', false)
commit('setError', error)
console.error(error);
}
},
任何建议将不胜感激谢谢。
解决方案
推荐阅读
- graphql - apollo-link-rest: query with dynamic fields in response
- tabulator - Page scroll when interact with tabulator
- sharepoint - MS Graph 后台/守护程序应用程序能否在没有用户交互的情况下模拟用户帐户
- java - Log4J 2 异步记录器 - 消息顺序
- python - 如何按组(属性)从python networkx计算索引
- c++ - 这段代码是工厂方法还是抽象工厂模式?
- path - 断言错误:找不到文件 YOLOv5
- r - 如何使用 spacyr 将单词替换为词条?
- linux - 我可以通过书签启动 vim
- typescript - 动态导入不适用于导出的模块打字稿