Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用Vue组合API作为跨组件的全局状态?

如何使用Vue组合API作为跨组件的全局状态?
EN

Stack Overflow用户
提问于 2021-09-15 09:55:25
回答 2查看 2.5K关注 0票数 1

因此,我尝试使用Vue组合API作为全局状态。例如,我创建了名为useLoading.js的文件作为加载标志。

useLoading.js

代码语言:javascript
运行
AI代码解释
复制
import { reactive, toRefs } from '@vue/composition-api'

export default () => {
  const state = reactive({
    isLoading: false
  })

  const setIsLoading = (loading) => {
    state.isLoading = loading
  }

  return {
    ...toRefs(state),
    setIsLoading
  }
}

然后,我创建了组件A,它将在单击按钮时调用setIsLoading

ComponentA.vue

代码语言:javascript
运行
AI代码解释
复制
<template>
  <div @click="showLoading" />
</template>

<script>
import useLoading from '@/composable/useLoading'

export default {
  setup () {
    const { setIsLoading } = useLoading()

    function showLoading () {
      setIsLoading(true)
    }

    return {
      showLoading
    }
  }
}
</script>

我还有组件B,当isLoading的值为true时,它将用于呈现true

ComponentB.vue

代码语言:javascript
运行
AI代码解释
复制
<template>
  <div v-if="isLoading" />
</template>

<script>
import useLoading from '@/composable/useLoading'

export default {
  setup () {
    const { isLoading } = useLoading()

    return {
      isLoading: isLoading
    }
  }
}
</script>

然而,isLoadingComponentB.vue中的值没有变化(不是反应性的)。但是,当我调用ComponentA.vue时,值确实发生了变化。

我觉得我的实现在使用复合API作为全局状态时有问题。有人能帮忙吗?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-16 04:30:28

更新

刚刚发现,我必须将状态排除在导出函数之外,如果我将它包含在导出函数中,如果在另一个地方调用它,它会创建其他状态。因此,状态将不会在组件之间同步。

代码语言:javascript
运行
AI代码解释
复制
import { reactive, toRefs } from '@vue/composition-api'

const state = reactive({
    isLoading: false
})

export default () => {

  const setIsLoading = (loading) => {
    state.isLoading = loading
  }

  return {
    ...toRefs(state),
    setIsLoading
  }
}
票数 1
EN

Stack Overflow用户

发布于 2021-09-15 10:39:16

像这样的东西会有用的:

useLoading.js

代码语言:javascript
运行
AI代码解释
复制
import { reactive } from 'vue'
export const state = reactive({
  isLoading: false
})

App.vue

代码语言:javascript
运行
AI代码解释
复制
<script setup>
import {state} from './useLoading.js';
</script>

<template>
  <input v-model="state.isloading" type="checkbox" />
</template>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69197831

复制
相关文章
前端系列12集-全局API,组合式API,选项式API的使用
The setup() hook serves as the entry point for Composition API usage in components in the following cases: 在以下情况下, setup() 钩子用作组件中 Composition API 使用的入口点:
达达前端
2023/10/08
5330
Vue中的全局组件注册
用户10781437
2023/10/10
1460
VUE之组件全局方法
全局方法其实是js自身就可以实现的方法,具体实现其实很简单, 比如加个日志显示组件:
陨石坠灭
2018/10/19
1.1K0
30. Vue 使用 vue-resource 配置全局API域名
在前面几篇中写了使用vue-resource执行get和post请求的方法,如下:
Devops海洋的渔夫
2020/04/22
8350
26. Vue 使用 vue-resource 配置全局API域名
在前面几篇中写了使用vue-resource执行get和post请求的方法,如下:
Devops海洋的渔夫
2022/01/17
5110
26. Vue 使用 vue-resource 配置全局API域名
vue3.0 全局API的变化
现在,将全局改变Vue行为的全局API移至由新的createApp方法创建的应用程序实例,并且它们的影响现在仅限于该应用程序实例。
公众号---人生代码
2020/06/19
2.2K0
如何使用Vue封装组件[通俗易懂]
想封装组件呢首先要思考: 1.你想向用户暴露哪些属性 (props) 2.你想向用户暴露哪些事件,让用户监听来处理后续的业务 ($emit,@) 3.你想让用户嵌入哪些自定义的内容(slot)
全栈程序员站长
2022/11/09
1.7K0
vue常用组件封装_vue组件全局注册和局部注册
项目中肯定会常用的一些基础组件,比如弹窗,toast之类的,要是在每个页面去引入的话那也太麻烦了,还好vue提供了一个全局注册组件的api,即Vue.compoment。
全栈程序员站长
2022/10/05
1.1K1
vue开发企业微信_vue全局api
4、用 ticket + 随机字符串 + 时间戳 + 当前网页url 拼接成一串字符,然后进行sha1加密。
全栈程序员站长
2022/11/11
2K1
vue开发企业微信_vue全局api
Vue全局组件和局部组件及组件传值
就是说它们在注册之后可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中。下面是使用在root根示例下的first-component全局组件:
_kyle
2020/08/24
1.6K0
Vue全局组件和局部组件及组件传值
在 Vue.js 中使用无状态组件[每日前端夜话0xB9]
同时,Vue 实例是一个 ViewModel,它包含的选项包括表示元素的模板、要安装的元素、方法和初始化时的生命周期钩子。
疯狂的技术宅
2019/09/05
1.9K0
在 Vue.js 中使用无状态组件[每日前端夜话0xB9]
Vue3组合式API使用教程
简介通过使用 Vue组合式API ,我们可以将界面中重复的部分连同其功能一起提取为可重用的代码段。
零云
2023/07/24
3300
vue.js 定义全局组件和局部组件的方法
组件(Component)是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。我们经常会自定义很多组件以满足我们不同的需求。
honey缘木鱼
2019/02/21
3.7K0
如何在Vue组件中访问Vuex store中的状态?
在Vue组件中访问Vuex store中的状态,可以通过计算属性 (computed properties) 或者直接通过$store.state来实现。
王小婷
2023/10/02
5080
Vue 中,如何将函数作为 props 传递给组件
作者:Michael Thiessen 译者:前端小智 来源:medium 点赞再看,养成习惯本文 GitHub https://github.com/qq44924588... 上已经收录,更多往
前端小智@大迁世界
2020/05/18
8.4K0
Vue3.0实现todolist-使用状态管理的api
1:states里面初始化任务列表 //定义所需要的状态的 state: { list:[ { title: "吃饭", complete: false, }, { title: "睡觉", complete: false, },
王小婷
2022/09/28
2980
Vue项目开发过程中,该如何维护全局状态?
全局状态 什么是状态?在代码的世界里,状态就是指数据,简单的理解:你现在的情绪状态是怎样的? “高兴”,“悲伤”,这就是描述你当前情绪状态的数据。 抽象到一个描述用户的Vue组件,当前登录的用户的头像
房东的狗丶
2023/02/17
4910
vue 自定义全局、局部组件
全局组件格式 template 是模板 props 是自定义组件用到的属性 可以是对象也可以是数组 组件的名称通常用 - 来连接,也可以像这个用大驼峰命名,但是在使用的时候,还是要使用 - 大小写之间用 - 连接,大写变成小写 Vue.component('MyComponentName', { /* ... */ })
用户7741497
2022/03/05
6790
Vue成神之路之全局API
vue.js——开发版本:包含完整的警告和调试模式 vue.min.js——生产版本:删除了警告,进行了压缩
小胖
2018/12/12
3.1K0
Vue成神之路之全局API
React技巧1(状态组件与无状态组件的使用)
本教程总共5篇,每日更新一篇,请关注我们!你可以进入历史消息查看以往文章,也敬请期待我们的新文章! 1.React 技巧1(状态组件与无状态组件的使用) ----2018.01.04 2.React 技巧2(避免无意义的父节点)----2018.01.05 3.React 技巧3(如何优雅的渲染一个List)----2018.01.06 4.React 技巧4(如何处理List里面的Item)----2018.01.07 5.React 技巧5(TodoList实现)----2018.01.08 开发环境
前端人人
2018/04/11
1.8K0
React技巧1(状态组件与无状态组件的使用)

相似问题

Vue组合api -使用组件道具的全局状态可组合

16

使用SnackBar作为Vue +Vue中的全局组件

24

Vue使用组合api更新数组状态

113

Vue组合API createComponent子组件

10

如何使用带有组合API的vue 2键入提示Vue组件方法

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档