如何在VUEX状态下动态更新API路径

How to update API path dynamically in VUEX state

我正在尝试在我的 Vuex 状态下动态更新 API 路径。 Vuex 必须在页面加载时设置默认路径“example.com/api/datasetA.json”,我想通过以下方式将路径更新为“example.com/api/datasetB.json”用户交互并立即获取新的 API 数据。

我的代码相关部分如下(更新代码):

VUEX:

export const state = () => ({
  apiData: [],
  apiId: 'datasetA.json'
});

export const mutations = {
  fillApiData: (state, data) => {state.apiData = data},
  updateApi: (state, newApiId) => {state.apiId = newApiId;}
};

export const actions = {
  async getApiData({commit, state}) {
    const response = await this.$axios.$get('https://example/api/'+state.apiId);
    commit('fillApiData', response); 

然后VUE方法如下:

methods: {

   updateApi(apiId) {
    
      this.$store.commit('updateApi', apiId)
      }

创建一个更改 vuex 状态的突变。然后 运行 getApiData 函数中的这个突变(提交)

export const state = () => ({
  apiData: [],
  apiId: 'datasetA.json'
});

export const mutations = {
  updateAPI(state, newApiId ) {
    state.apiId = newApiId;
  }
};

export const actions = {
  async getApiData({commit, state}) {
    const response = await this.$axios.$get('https://example/api/'+state.apiId);
    commit('updateValue', response);
    commit('updateAPI', 'some.new.datasetB.json');
  }
}

I can update the state directly by using this.$store.state.apiId = apiId in methods but I know this is bad practice

你是对的。但是,如果您希望这种方法在 Vuex 外部更新状态,您可以使用突变来更改 Vuex - 这是一个很好的做法。

那你可以做

this.$store.commit('updateAPI', 'my new value')