【问题标题】:How should I call NuxtServerInit correctly?我应该如何正确调用 NuxtServerInit?
【发布时间】:2019-10-26 17:01:49
【问题描述】:

VUEX 仓库中有这样的代码:

export const state = () => ({
  z: 'sdfjkhskldjfhjskjdhfksjdhf',
});

export const mutations = {

  init_data_for_firmenistorie2 (state, uploadDbFirmenistorieData){
    state.z = uploadDbFirmenistorieData;
  },


};

  async nuxtServerInit ({commit}) {
    console.log('111');
    commit('init_data_for_firmenistorie2', 123)
  }


}

我的问题是:
我应该如何调用 nuxtServerInit 以使用它来重写状态 z 的值?
附言现在我的代码不起作用。

【问题讨论】:

    标签: javascript vue.js vuex nuxt.js


    【解决方案1】:

    如果您的store/index.js 有一个动作nuxtServerInit,那么Nuxt 将调用它。

    所以你的代码最终看起来像

    export const state = () => ({
      z: 'sdfjkhskldjfhjskjdhfksjdhf',
    });
    
    export const mutations = {
      init_data_for_firmenistorie2(state, uploadDbFirmenistorieData) {
        state.z = uploadDbFirmenistorieData;
      },
    };
    
    export const actions = {
      nuxtServerInit({ commit }) {
        console.log('111');
        commit('init_data_for_firmenistorie2', 123);
      },
    };
    

    【讨论】:

    • 如果此存储文件的名称为“company_history.js” - 我不明白应该在存储 index.js 中写什么?现在我在索引文件中有类似的东西:joxi.ru/zANMJPYsvpWQZ2
    • 将文件名 indexPage.js 更改为 index.js 并创建 export const 操作......就像我在上面展示的那样
    • joxi.ru/RmzB1JxTY9gW0m 如果我更改了名称,我会遇到这样的问题:joxi.ru/DmBgybLhJVnN52 因为它我使用了这个名称(IndexPage)。
    • Index.js 状态成为根状态的一部分,您可以从那里访问它。 vuex.vuejs.org/guide/modules.html#module-local-state
    • 而调度动作只是删除前缀的问题。由于它的根级动作。只需执行 $store.dispatch('init_state_for...')
    【解决方案2】:

    你创建一个动作对象,然后你把你的nuxtServerInit放在那里:

    export const actions = {
       nuxtServerInit(vuexContext, context){
          vuexContext.commit('init_data_for_firmenistorie2', 123);
       }
    }
    

    使用context,您还可以访问例如paramsroutesredirect 等。 文档:https://nuxtjs.org/api/context

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 2010-10-02
      • 2021-12-03
      • 2013-07-10
      • 2013-05-18
      相关资源
      最近更新 更多