问答

vuex useStore() 始终返回undefined

作者:admin 2021-04-20 我要评论

版本信息 "vue": "^3.0.0", "vue-router": "^4.0.0-0", "vuex": "^4.0.0-0" "typescript": "~3.9.3" 问题描述 利用@vue/cli 创建的vue3+ts项目中, 调用 vuex 4...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

版本信息

  • "vue": "^3.0.0",
  • "vue-router": "^4.0.0-0",
  • "vuex": "^4.0.0-0"
  • "typescript": "~3.9.3"

问题描述

利用@vue/cli 创建的vue3+ts项目中, 调用 vuex 4提供的useStore()方法,始终返回undefined

这是我的代码

hook 定义
export interface IUseTodo {
    setTodo: (value: string) => void;
}

export function useTodo(): IUseTodo {
    const store: Store<any> = useStore();
    console.log("################",store)
    const setTodo = function (value: string) {
        const todo: ITodo = {
            id: new Date().getTime(),
            content: value,
            status: TODO_STATUS.DOING
        };
        store.dispatch(SET_TODO, todo);
    }
    return {
        setTodo
    }
}
使用hook
export default defineComponent({
  name: "TodoInput",
  components: {},
  setup() {
    const todoVal = ref("");
    const handleSetTodo = () => {
      if (!todoVal.value.trim().length) return;
      const { setTodo } = useTodo();
      setTodo("hello world");
      todoVal.value = "";
    };
    return {
      todoVal,
      handleSetTodo
    };
  }
});
###

useStore()方法并不是在任何时机下都可以执行,需要保证useStore在setUp 执行时执行

###

你是不是少了从vuex中引入这个方法?

  import { useStore } from 'vuex'

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • nginx响应速度很慢

    nginx响应速度很慢

  • 点击选中的多选框,会在已选那一栏显示

    点击选中的多选框,会在已选那一栏显示

  • PHP 多态的理解

    PHP 多态的理解

  • 关于C语言中static的问题

    关于C语言中static的问题

腾讯云代理商
海外云服务器