如何在 Vue.js 应用程序中使用 vuex 存储从子组件(设置页面)设置值?

2023-12-10

我正在尝试创建一个“设置”组件,它将选定的值保存到存储中,以便所有其他组件都可以使用这些值来更改其外观。

设置视图.vue:

其中一项设置(你也可以看到在代码笔上):

[...]

<p>{{ themeColor }}</p>
<v-radio-group v-model="themeColor">
  <v-radio label="light" value="light"></v-radio>
  <v-radio label="dark" value="dark"></v-radio>
</v-radio-group>

[...]

<script>
export default {
  data () {
    return {
      // default value
      themeColor: 'light',
    }
  },
  computed: {
    themeColor () {
      return this.$store.state.themeColor
    }
  },
  methods: {
    changeThemeColor() {
      this.$store.commit('changeThemeColor')
    },
  }
}
</script>

我不知道如何正确将该设置的选定值发送到商店,因此我只是使用方法创建了一个突变(加上需要有一些默认值,例如themeColor: 'light'如上所示,使其更加混乱)

商店/模块/Settings.js

const state = {
    themeColor: ''
  }
  
  const mutations = {
    changeThemeColor: state => {
      state.themeColor = ''
    }
  }
  
  export default {
    state,
    mutations
  }
  

如何正确执行此操作,以便我可以在所有组件中使用该值?

我必须使用类似的东西吗getters or actions?我真的不知道。


From https://vuex.vuejs.org/en/forms.html,我将使用带有 getter 和 setter 的计算属性,即

export default {
  computed: {
    themeColor: {
      get () {
        return this.$store.state.themeColor
      },
      set (value) {
        this.$store.commit('changeThemeColor', value)
      }          
    }
  }
}

请注意,您不需要data or methods.


您的商店也应该看起来更像

const state = {
  themeColor: 'light' // default value
}

const mutations = {
  changeThemeColor (state, themeColor) {
    state.themeColor = themeColor
  }
}

Demo ~ https://codepen.io/anon/pen/YYbPww?editors=1011


对于您只想显示/读取的实例themeColor在你的组件中声明,我建议使用mapState helper.

import { mapState } from 'vuex'

export default {
  // ...
  computed: mapState(['themeColor'])
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Vue.js 应用程序中使用 vuex 存储从子组件(设置页面)设置值? 的相关文章

随机推荐

  • 选择栏被隐藏

    我已经添加了adjustPan in Manifest xml这里的文件是我的Activity tag in Manifest xml android name LoginActivity android configChanges ori
  • 典型的 IoC 容器用法 - 向下传递数据

    我最近开始使用IoC第一次使用容器 但我没有接受过使用它的最佳实践的教育 更具体地说我正在使用Unity在一个 C NET 项目中 我开始使用它 因为它附带Prism 我使用容器来解析 顶级 对象 并且它们根据容器获得注入的正确对象 但是
  • C# 通过拖动绘制线条

    如何像windows画图那样画一条线 单击固定第一个点 第二个点 和线 随鼠标移动 再单击固定线 int x 0 y 0 protected override void OnMouseMove MouseEventArgs e base O
  • 两个日期之间的 Pythonic 差异(以年为单位)?

    下面有更有效的方法吗 我希望将两个日期之间的年份差异作为单个标量 欢迎任何建议 from datetime import datetime start date datetime 2010 4 28 12 33 end date datet
  • 你如何知道 jQuery 函数何时返回 false?

    return false 似乎工作在submitHandler但我不知道为什么 function submitHandler post this attr action this serialize null script return f
  • iOS 8 Swift 音频播放完成时执行方法

    我正在 iOS 8 的 Swift 中播放音频文件 我需要知道声音何时结束 如何在声音结束时执行一个方法 这取决于你如何玩它 查找其状态更改可以触发 KVO 通知的委托方法 通知或可观察属性 例如 如果您使用 AVAudioPlayer 它
  • 如何为 Npgsql 提供自定义数据类型作为参数?

    我想使用 Npgsql 将键值对数组作为参数传递给 PostgreSQL 函数 我定义了以下类型 drop type if exists key value pair create type key value pair as k varc
  • 如何使用复选框列和绑定从 Xceed\Extended WPF Toolkit 设置数据网格控件

    我正在尝试将 WPF 数据网格替换为 xceed Extended WPF Toolkit DataGridControl 我需要对复选框列中的单击事件做出反应 以总结许多其他列 在现有的数据网格中 我有一个复选框列 它绑定到一个可观察集合
  • 无法使 (UTF-8) 繁体中文字符在 PHP gettext 扩展中工作(在 poEdit 中创建的 .po 和 .mo 文件)

    我检查了MSDN语言环境字符串是 zh Hant 但我也尝试使用 zh TW 中文 台湾 繁体中文字符在 poEditor 中看起来不错 但是当我在浏览器中打开文件时 这些字符只是奇怪的符号 o 我认为翻译是有效的 但编码有问题 我对字符集
  • AngularJS + Json:如何渲染 html

    我知道这个问题被问了很多次 但我相信我的设置不同 因此需要在不同的场景中提出一个新问题 有很多示例展示了如何渲染 HTML 但我似乎无法使其与任何示例一起使用 我想渲染 html aboutlongs 0 description 这有 br
  • 在powershell中拆分表情符号序列

    我有一个仅填充表情符号的文本框 没有空格或任何类型的字符 我需要拆分这些表情符号才能识别它们 这是我尝试过的 function emoji to unicode foreach emoji in textbox Text unicode S
  • 无法为委托分配参数类型不太具体的匿名方法[重复]

    这个问题在这里已经有答案了 public class Program delegate void Srini string param static void Main string args Srini sr new Srini Prin
  • 页面刷新后保留TextBox值

    我有一个文本框 这就是我为其赋值的方式 var start moment subtract 6 days var end moment datePicker daterangepicker timepicker false startDat
  • React JS:API 调用成功后获取上下文数据

    我一直在获取上下文数据 我有一个上下文和一个使用其数据的组件 我需要在我的组件中获取 API 调用成功时上下文变量的更新数据 那么我该怎么做呢 这是我尝试过的 上下文 js import React useState createConte
  • 更改 Rails 3.1 中的视图格式(提供移动 html 格式,回退到普通 html)

    我正在我们普通的 html 网站旁边创建一个移动网站 使用导轨 3 1 移动站点在子域 m site com 中访问 我已经定义了移动格式 Mime Type register alias text html mobile 在 Applic
  • 在链表中的单个索引处存储超过 1 个数据项?

    我试图在链接列表中的单个索引处存储多个数据项 我教科书中的所有示例似乎都说明每个索引仅添加 1 条数据 我假设可以添加更多吗 例如 使用 Collections API 来存储整数 我将执行以下操作 LinkedList
  • Python 3 struct.pack() 打印奇怪的字符

    我正在测试 struct 模块 因为我想将带有字节 char 和 unsigned int 参数的简单命令发送到另一个应用程序 然而 在转换为小端无符号整数时 我发现了一些奇怪的事情 这些示例打印了正确的十六进制表示形式 gt gt gt
  • 处理电话:anchor

    我有一个电话号码的锚点 在手机上很棒 在带有 Skype 或 Google Voice 的桌面上 效果很好 问题出在桌面上 他们不知道如何处理这个问题 我应该怎么办 检测它是否不是移动设备并更改链接 我仍然希望显示链接 只是 URL 不同
  • 启动超时并被终止

    我使用 Tesla 2075 cc 2 0 和 CUDA 4 2 我正在非显示器上运行我的程序GPU 特斯拉 我收到错误 the launch timed out and was terminated 非显示 GPU 上是否会出现此错误 而
  • 如何在 Vue.js 应用程序中使用 vuex 存储从子组件(设置页面)设置值?

    我正在尝试创建一个 设置 组件 它将选定的值保存到存储中 以便所有其他组件都可以使用这些值来更改其外观 设置视图 vue 其中一项设置 你也可以看到在代码笔上 p themeColor p