为什么我可以在vuex操作中使用dayJS但不能在Vuex存储中初始化状态?

雷蒙·范·尼文文森(Rémonvan Nieuwenhuizen)

我正在尝试使用NuxtJSdayjs模块将初始月份设置为当前月份

为什么我可以this.$dayjs在行动中使用但不能在状态下使用?它不应该可以全局访问吗?

以及如何初始化当前月份的状态?

export const state = () => ({
  month: this.$dayjs().startOf('month'), //THIS LINE DOESNT WORK
})
export const mutations = { }
export const actions = {
  bindOngepland: firestoreAction(function ({ bindFirestoreRef, rootState }) {
    const month = this.$dayjs().startOf('month') // THIS LINE DOES WORK
    const nextMonth = state.month.add(1, 'month')
  }),
  setNextMonth({  }) {
  },
}

在这个简化的示例中,undefined第2行出现错误,this似乎是undefined

东尼19

state创建应用程序实例时设置is,因此尚未定义Nuxt实例。并且动作中的this“有效”(即您的Nuxt实例)是bindOngepland因为它是一个常规函数,其上下文在被调用时便受到约束。

解决方法是使组件调用初始化状态的操作。在通用模式(或ssr: true),商店可以提供一个nuxtServerInit动作被自动调用初始化状态:

// store/index.js
export const actions = {
  nuxtServerInit({ commit }) {
    commit('SET_MONTH', this.$dayjs().startOf('month'))
  }
}

export const mutations = {
  SET_MONTH(state, value) {
    state.month = value
  }
}

在SPA模式(ssr: false)中,您必须明确分配操作:

// store/index.js
export const actions = {
  init({ commit }) {
    commit('SET_MONTH', this.$dayjs().startOf('month'))
  }
}

export const mutations = {
  SET_MONTH(state, value) {
    state.month = value
  }
}

// MyComponent.vue
export default {
  mounted() {
    this.$store.dispatch('init')
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我可以在运算符+ =的右侧使用初始化程序列表,但不能在运算符+的右侧使用初始化程序列表?

为什么我不能在初始化状态后刷新构建

为什么出口不能在initWithCoder中初始化?

为什么不能在if块中使用以if条件初始化的变量?

为什么不能在实例初始化程序块中使用final字段?

为什么我不能在类中初始化非常量静态成员或静态数组?

为什么我不能在结构中初始化char数组

骨干视图为什么我不能在初始化中触发UI事件?

为什么我不能在SwiftUI初始化中为@State var赋值?

为什么我不能在Kotlin中初始化ArrayAdapter?

为什么我们不能在构造函数初始化列表中初始化静态变量,但可以在构造函数主体中初始化

为什么可以使用大括号初始化对aggreggate结构进行大括号初始化,但不能使用与大括号初始化中相同的参数列表来放置它?

为什么我们不能在未评估的上下文中使用花括号初始化程序?

我应该在Vuex的什么地方放置状态初始化代码?

为什么我可以在活动/提要中使用onClick,但不能在对话框片段中使用onClick?

Vue - 为什么我不能在 vuex 中显示我的 axios get 请求的结果?

为什么不能在Java构造函数中使用字段的速记数组初始化?

为什么数组可以在函数参数中初始化,但不能用另一个数组初始化一个数组

当.config定义中包含本地存储时,为什么不能在我的.config中使用localStorage?

如何使用VueX存储字段的值初始化组件?

为什么我不能在VueJS / Vuex中调用命名空间的getter?

为什么我不能在bashrc初始化虚拟接口?

为什么我们不能使用scanf直接初始化struct中的变量?

当我尝试使用组件中的方法更改数据时,为什么我的 vuex 存储状态更改?

为什么不能在Java中的开关内初始化变量?

为什么不能在公共头文件中初始化静态类成员?

为什么不能在init块编译中初始化变量接口属性的代码?

为什么不能在类的成员函数中初始化QThread?

为什么不能在Swift中初始化一个空数组?