繁体   English   中英

VUE3 - object 上的 VUEX v 模型

[英]VUE3 - VUEX v-model on an object

我正在使用 Vue3 的 Composition API 并想在我的商店中存储一些搜索参数。

我的 state:

const state = () => ({
    selection: {
        selected_cabins: "M",
        flight_type: "round",
        adults: 1,
        children: 0,
        infants: 0,
        pets: 0,
        fly_from: "",
        fly_to: "",
        start_date: "",
        return_date: "",
    },
});

我正在尝试像这样使用它:

<q-select
  borderless
  :options="flightType"
  v-model="selection.flight_type"
  option-value="value"
  emit-value
  map-options
/>

计算属性:

const selection = computed({
            get() {
                return store.state.flights.selection;
            },
            set(val) {
                store.commit("flights/SET_SELECTION", val);
            },
        });

但我仍然收到无法在mutation之外对 state 进行 mutate 的错误。

如果我将 object ( selections ) 分解为它的属性,我可以让它工作,但这真的很冗长。 有没有办法像我一样用 object 来做上面的事情?

v-model中,您正在访问嵌套的 state 值,该值会改变 state,正确的语法应该如下所示:

v-model="flight_type"

并在 setter 中传播具有修改属性的 state:

const flight_type = computed({
            get() {
                return store.state.flights.selection.flight_type;
            },
            set(val) {
                store.commit("flights/SET_SELECTION", 
                           {...store.state.flights.selection,flight_type:val);
            },
        });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM