翼度科技»论坛 编程开发 JavaScript 查看内容

vuex中的state使用及说明

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
vuex中的state

本文讲解vuex中的state使用方法。

入门讲解

首先第一步肯定是创建vue项目,具体操作看这篇文章:用命令窗口的方式创建Vue项目
首先在store文件夹下面,创建一个state.js文件,存放公共的数据

在store文件夹下面的index.js文件中进行如下配置。

然后前端可以采取这两种写法,就可以访问到存储的数据了。
所以我们可以知道的是这个state.js就是用来存放数据的。



mapState辅助函数

具体代码如下:
  1. <template>
  2.   <div class="about">
  3.     <h1>This is an about page</h1>
  4.     {{ $store.state.str }}
  5.     <hr>
  6.     {{ str }}
  7.     <hr>
  8.     {{ a }}
  9.     <hr>
  10.     {{ b }}
  11.   </div>
  12. </template>

  13. <script>
  14. import { mapState } from 'vuex'
  15. export default {
  16.   computed: {
  17.     ...mapState(['str', 'a', 'b'])
  18.   }
  19. }
  20. </script>
复制代码
运行结果:


案例

好的,在不增加难度的情况下,我来给您修改一下之前的案例。

案例 1:在线状态


  • 思路
  1. const store = new Vuex.Store({
  2.   state: {
  3.     onlineStatus: false
  4.   }
  5. })
复制代码
这里我们定义了一个名为
  1. onlineStatus
复制代码
的属性,并初始化为
  1. false
复制代码

当用户上线时,可以更新
  1. onlineStatus
复制代码
属性:
  1. store.state.onlineStatus = true
复制代码
这将直接更改
  1. onlineStatus
复制代码
属性中的值。
然后,你可以通过其他组件调用此值:
  1. computed: {
  2.   onlineStatus() {
  3.     return this.$store.state.onlineStatus
  4.   }
  5. }
复制代码
完整代码

  • 项目结构


  • state.js
  1. export default {
  2.   onlineStatus: false
  3. }
复制代码

  • index.js
  1. import { createStore } from 'vuex'
  2. import state from './state'

  3. export default createStore({
  4.   state,
  5.   mutations: {
  6.     SET_ONLINE_STATUS (state, status) {
  7.       state.onlineStatus = status
  8.     }
  9.   }
  10. })
复制代码

  • TestView.vue
  1. <template>
  2.     <div>
  3.       <p>Your online status is {{ onlineStatusText }}</p>
  4.     </div>
  5.   </template>

  6. <script>
  7. export default {
  8.   computed: {
  9.     onlineStatusText () {
  10.       return this.$store.state.onlineStatus ? 'Online' : 'Offline'
  11.     }
  12.   }
  13. }
  14. </script>

  15.   <style>
  16.   /* 样式可以选择添加 */
  17.   </style>
复制代码
案例 2:主题样式


  • 思路
  1. const store = new Vuex.Store({
  2.   state: {
  3.     themeColor: 'blue'
  4.   }
  5. })
复制代码
我们定义了一个名为
  1. themeColor
复制代码
的属性,并用
  1. "blue"
复制代码
初始化它。
为了更改主题颜色,可以直接设置
  1. themeColor
复制代码
的值:
  1. store.state.themeColor = 'red'
复制代码
这将直接更改我们的主题颜色值。
然后,你可以通过其他组件调用此值:
  1. computed: {
  2.   themeColor() {
  3.     return this.$store.state.themeColor
  4.   }
  5. }
复制代码
完整代码

  • state.js
  1. export default {
  2.   onlineStatus: false,
  3.   themeColor: 'blue'
  4. }
复制代码

  • index.js
  1. import { createStore } from 'vuex'
  2. import state from './state'

  3. export default createStore({
  4.   state,
  5.   mutations: {
  6.     SET_ONLINE_STATUS (state, status) {
  7.       state.onlineStatus = status
  8.     },
  9.     SET_THEME_COLOR (state, color) {
  10.       state.themeColor = color
  11.     }
  12.   }
  13. })
复制代码

  • TestView.vue
  1. <template>
  2.     <div :style="{ background: themeColor }">
  3.       <p>Your theme color is {{ themeColor }}</p>
  4.       <button @click="changeThemeColor">Change Theme Color</button>
  5.     </div>
  6.   </template>

  7. <script>
  8. export default {
  9.   computed: {
  10.     themeColor () {
  11.       return this.$store.state.themeColor
  12.     }
  13.   },
  14.   methods: {
  15.     changeThemeColor () {
  16.       this.$store.state.themeColor = 'red'
  17.     }
  18.   }
  19. }
  20. </script>

  21.   <style>
  22.   /* 样式可以自定义 */
  23.   </style>
复制代码
运行结果



总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

来源:https://www.jb51.net/javascript/326760ddd.htm
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具