Javascript Vuex:附加多个项以存储在中
我有以下商店:Javascript Vuex:附加多个项以存储在中,javascript,vue.js,vuejs2,vuex,Javascript,Vue.js,Vuejs2,Vuex,我有以下商店: import Vue from 'vue' import Vuex from 'vuex' import axios from 'axios' Vue.use(Vuex) export default new Vuex.Store({ plugins: [createPersistedState()], state: { data: [ {symbol: '', price: ''} ] }, mutations: {
import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'
Vue.use(Vuex)
export default new Vuex.Store({
plugins: [createPersistedState()],
state: {
data: [
{symbol: '', price: ''}
]
},
mutations: {
RECEIVE_PRICE(state, {symbol, price}) {
state.data = {
symbol: symbol,
price: price
}
// state.data.push({
// symbol: symbol,
// price: price
// });
}
},
actions: {
async FETCH_PRICE({commit}, payload) {
const url = `https://min-api.cryptocompare.com/data/price?fsym=${payload.symbol}&tsyms=${payload.currency}`;
const {data} = await axios.get(url);
commit('RECEIVE_PRICE', {
symbol: payload.symbol,
price: data[payload.currency]
});
}
},
getters: {
crypto_prices: state => {
return state;
}
}
})
在我的组件中,我有一个包含符号、金额和货币三个输入的表单
当我在computed:mapGetters['crypto_prices']组件中调用getter时,我从getter返回数据
问题:
当我添加新密码时,我的存储会被新数据覆盖。
如何将其附加到我的变异中
我用store.data.push{…}试过了,但是我有重复的…你必须使用push。如果不需要任何副本,则必须找到现有条目并与新条目交换,如下所示:
const index = state.data.findIndex(d => d.symbol === symbol)
if (index === -1)
state.data.push({symbol, price});
else
state.data[index] = {symbol, price}
你必须用推的方式。如果不需要任何副本,则必须找到现有条目并与新条目交换,如下所示:
const index = state.data.findIndex(d => d.symbol === symbol)
if (index === -1)
state.data.push({symbol, price});
else
state.data[index] = {symbol, price}
要添加到您的应用商店中,您需要调用一个操作:
您可能需要考虑的是将存储区中的数据重命名为加密、货币或其他更具描述性的内容,仅仅是因为VUE使用Word数据的方式。p> 此外,在Getter中,随着商店的发展,您可以调用该商品
currencies: state => {
return state.currencies;
},
要添加到您的应用商店中,您需要调用一个操作:
您可能需要考虑的是将存储区中的数据重命名为加密、货币或其他更具描述性的内容,仅仅是因为VUE使用Word数据的方式。p> 此外,在Getter中,随着商店的发展,您可以调用该商品
currencies: state => {
return state.currencies;
},
基本上你想合并两个数组?基本上你想合并两个数组?我想你是想写findIndex?如果找不到任何内容,find将返回未定义。我想你是想写findIndex?如果找不到任何内容,find将返回undefined。