【发布时间】:2021-07-02 17:39:07
【问题描述】:
我刚开始学习 Vue 和 Nuxt。所以我有一个页面,我可以在其中获取所有订单详细信息并更新订单状态。 UI 中显示的订单状态不会异步更新。我怎样才能在这里实现响应式?
我需要异步更新Current Status : <b>{{ order_details.status.state }}</b>这里的值。
模板
<template>
<v-container>
<v-row>
<v-col cols="12">
Current Status : <b>{{ order_details.status.state }}</b>
</v-col>
</v-row>
</v-container>
</template>
<template>
<v-form>
<v-container>
<v-row>
<v-col cols="12">
<div class="d-flex align-center justify-end">
<v-btn
color="primary"
class="text-subtitle-2 font-weight-medium"
@click="updateOrder"
>Update</v-btn
>
</div>
</v-col>
</v-row>
</v-container>
</v-form>
</template>
脚本
export default {
async fetch({ store, params }) {
await store.dispatch("merchant/fetchOrderDetails", {
id: params.id
});
await store.dispatch("fetchMerchants");
await store.dispatch("fetchAllStatus");
},
data() {
return {
sortTypes: ["Date", "Distance"],
selectedSort: "Distance",
statusId: "",
};
},
computed: {
...mapState({
merchants: "merchants",
statusList: "statusList"
}),
...mapState("merchant", {
order_details: "orderDetails"
}),
},
methods: {
async updateOrder() {
await this.$axios
.$patch(
`/admin-portal/orders/${this.$route.params.id}`,
{
statusId: this.statusId
}
)
},
}
};
商店
export const state = () => ({
orderDetails: {}
});
export const mutations = {
SET_ORDER_DETAILS(state, orderDetails) {
state.orderDetails = orderDetails;
}
};
export const actions = {
async fetchOrderDetails({ commit }, { id }) {
const orderDetails = await this.$axios.$get(
`/pharmaceutical/admin-portal/orders/${id}`
);
commit("SET_ORDER_DETAILS", orderDetails);
}
};
【问题讨论】:
-
你的 Vue 开发工具中有什么?
-
另外
updateOrder不会在任何时候更新 Vuex。 -
@kissu 我正在执行 onClick 方法。如何用新数据更新 Vuex?
-
使用 Vuex 动作,它调用 à mutation 来改变状态并使其与您刚刚获取的内容保持同步。
-
@kissu 你能提供代码吗?我对 Vue.js 很陌生