gpt4 book ai didi

javascript - 为什么输入的值没有传递给 VUEX

转载 作者:行者123 更新时间:2023-11-30 19:37:19 25 4
gpt4 key购买 nike

我无法将input传输到store。当我点击 add item 按钮时,我需要创建一个 block 及其 delete 按钮 和在 input 中输入的文本 。然后将其全部保存在本地存储中。但现在我只创建了一个没有文本的新 block 。请帮助我修复我的代码以使其正常工作。

这是它应该如何工作

enter image description here

但现在它是如何工作的

enter image description here

我做错了什么?如何将值从 Input 传输到 Vuex?

这是我的代码

<template>

<f7-block-title>Some items</f7-block-title>
<f7-block v-for="(cat, n) in getCats" :key="n">
<span>{{ cat }}</span>
<f7-button fill color="red" @click="removeCat(n)">Delete Cat</f7-button>
</f7-block>
<f7-list form>
<f7-list-input :value="tempCat" type="text"></f7-list-input>
<f7-button fill color="blue" @click="addCat(tempCat)">Add some item</f7-button>
</f7-list>

</template>

<script>
import { mapGetters, mapActions } from 'vuex';
export default {
data () {
return {
tempCat: '',
};
},
computed:{
...mapGetters([
'getCats',
]),
},
methods: {
...mapActions([
'addCat',
'removeCat',
])
}
}
</script>

VUEX 中的代码

function loadLocalStorage() {
try {
return JSON.parse(localStorage.getItem('cats'));
} catch(e) {
localStorage.removeItem('cats');
return [];
}
}

export default new Vuex.Store({
state: {
cats: loadLocalStorage(),
},
getters:{
getCats: state => state.cats,
},
actions: {
addCat(context, data) {
context.commit('ADD_CAT', data);
context.commit('SAVE_CATS');
},
removeCat(context, data) {
context.commit('REMOVE_CAT', data);
context.commit('SAVE_CATS');
},
},

mutations: {
ADD_CAT(state, data) {
state.cats.push(data);
console.log(state.cats);
},
SAVE_CATS(state) {
localStorage.setItem('cats', JSON.stringify(state.cats));
console.log(state.cats);
},
REMOVE_CAT(state, index) {
state.cats.splice(index, 1);
},
},
});

GitHub 链接 https://github.com/MrRJDio/ex1

最佳答案

首先,您的代码不遵守 VueX 状态管理标准。 This article很好地解释了如何正确使用 VueX。

一些有效的 Vuex 会喜欢这样:

Vue文件:

<template>
<f7-block strong>
<f7-block-title>Some items</f7-block-title>
<f7-block v-for="(cat, n) in getCats" :key="n">
<span>{{ cat }}</span>
<f7-button fill color="red" @click="removeCat(n)">Delete Cat</f7-button>
</f7-block>
<f7-list form>
<f7-list-input :value="tempCat" type="text" placeholder="Заметка"></f7-list-input>
<f7-button fill color="blue" @click="addCat(tempCat)">Add some item</f7-button>
</f7-list>
</f7-block>
</template>

<script>
import { mapGetters, mapActions } from 'vuex';

export default {
data () {
return {
tempCat: '',
};
},
computed:{
...mapGetters([
'getCats',
]),
},
methods: {
...mapActions([
'addCat',
'removeCat',
])
}
}
</script>

商店:

function loadLocalStorage() {
try {
return JSON.parse(localStorage.getItem('cats'));
} catch(e) {
localStorage.removeItem('cats');
return [];
}
}

export default new Vuex.Store({
state: {
cats: loadLocalStorage(),
},
getters:{
getCats: state => state.cats,
},
actions: {
addCat(context, data) {
context.commit('ADD_CAT', data);
context.commit('SAVE_CATS');
},
removeCat(context, data) {
context.commit('REMOVE_CAT', data);
context.commit('SAVE_CATS');
},
},
mutations: {
ADD_CAT(state, data) {
state.cats.push(data);
},
SAVE_CATS(state) {
localStorage.setItem('cats', JSON.stringify(state.cats));
},
REMOVE_CAT(state, index) {
state.cats.splice(index, 1);
},
},
});

关于javascript - 为什么输入的值没有传递给 VUEX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55799648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com