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。