使用计算属性和 VueX 的样式绑定

Posted

技术标签:

【中文标题】使用计算属性和 VueX 的样式绑定【英文标题】:Style-Binding using Computed Properties and VueX 【发布时间】:2017-03-10 01:04:03 【问题描述】:

如何在与 VueX 集成的同时使用 VueJS 中的计算属性绑定样式。

我遇到的问题是关于我的样式属性在我的 VueX 商店更改后没有更新。

代码示例:

//VueX Store
const store = new Vuex.Store(
	state : 
		div: [
			
				offset: 0,
				width: 1,
				text : 'Hello World'
			,
			
				offset: 0,
				width: 1,
				text : 'Hello World As Well'
			
		]
  
);
//My component
<template>
	<div v-bind:style=" width: width, left: offset">
		<p>text</p>
	</div>
</template>

<script>
export default 
		name: 'divBox',
		computed : 
			text : function() 
				return this.$store.state.div[this.Id].text;
			,
			width : function() 
				return this.$store.state.div[this.Id].width;
			,
			offset : function() 
				return this.$store.state.div[this.Id].offset;
			
		,
		props : ['Id']

</script>

【问题讨论】:

【参考方案1】:

这是一个如何使用 vuex 来做你想做的事的工作示例。 https://jsfiddle.net/n9jmu5v7/770/ 我认为您的问题是您的商店不包含任何突变https://vuex.vuejs.org/en/mutations.html

mutations: 
  bgChange: state => state.bg='grey',
  colorChange: state => state.color='green'

另外,请记住,仅仅因为您使用 vuex 并不意味着您需要将所有内容都放入其中,将本地数据保存在组件中是可以的。例如,组件样式信息听起来像是不需要与其他任何东西共享的东西(显然你可能有理由将它存储在有意义的 vuex 中)。

【讨论】:

这行得通!非常感谢!顺便说一句,我设置了突变 -> 但由于某种原因,它们无法正常工作。 @NathanielDeshpande 如果这回答了问题,请不要忘记接受它作为正确答案。如果您找到更好的答案,请务必发布。

以上是关于使用计算属性和 VueX 的样式绑定的主要内容,如果未能解决你的问题,请参考以下文章

Vue计算属性及样式绑定

Vue计算属性及样式绑定

Vue 计算属性和监视属性详解细节 class类绑定和style样式绑定

使用计算属性绑定基于 Vuetify 的 Viewport 断点的样式

(Vue -03)Vue绑定样式 + 计算属性 + 侦听器+ 过滤器

计算的道具或数据传递给背景图像的样式绑定