vue中css如何使用data中的變量
vue css使用data中的變量
封裝一個(gè)ui組件,組件的樣式一般是多種多樣的
我們可以通過(guò)組件傳值的方式將ui屬性傳遞給組件,但是我們屬性是在js中可以拿到,vue3之前css是無(wú)法直接獲取的
(vue3中已經(jīng)可以直接獲取,可以去學(xué)習(xí)一下) 通過(guò)vars
那么在vue2中,我們要借助setProperty函數(shù)
寫一個(gè)簡(jiǎn)單的例子
<template>
<div class="home" ref="UI">
<div class="header">hello world</div>
</div>
</template>
<script>
export default {
data () {
return {
color: 'red'
}
},
mounted(){
this.setUI()
},
methods:{
setUI(){
this.$refs.UI.style.setProperty("--color",this.color);//給變量賦值
}
}
}
</script>
<style>
.home{
.header{
color: var(--color); //使用變量
}
}
</style>看到另一種寫法
要簡(jiǎn)單一點(diǎn),不需要借助setProperty函數(shù)
<template>
<div class="home" :style="myStyle">
<div class="header">hello world</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue'
export default Vue.extend({
data () {
return {
color: 'red'
}
},
computed: {
myStyle () :object{
return {
"--color": this.color,
}
}
},
})
</script>
<style>
.home{
.header{
color: var(--color); //使用變量
}
}
</style>vue中data變量使用的注意事項(xiàng)
因?yàn)樵赩ue中,data中的屬性往往都是用于雙向綁定,所以Vue會(huì)對(duì)其有劫持,所以我們?cè)趯?duì)data屬性進(jìn)行操作時(shí),盡量不要對(duì)其直接操作
比如下面代碼:
export default {
data() {
return {
list: []
}
},
methods: {
init() {
for(let i = 0; i < 1000; i++) {
this.list.push({
key: i,
name: '張三'
});
}
console.log(this.list);
}
},
created() {
this.init();
}
}
最終打印結(jié)果如下:

可以看到包含一個(gè)Observer屬性,這是Vue自動(dòng)加上的。
上面代碼不斷向this.list中添加數(shù)據(jù),這樣會(huì)造成過(guò)度數(shù)據(jù)劫持,造成邏輯處理速度極慢(取值同樣如此),可能我們?cè)谄綍r(shí)的代碼上感受不到,如果將一個(gè)比較復(fù)雜的canvas渲染動(dòng)畫放進(jìn)去,全部使用this屬性就會(huì)發(fā)現(xiàn)canvas渲染非常卡頓。
所以我們將init中代碼改成:
const list = [];
for(let i = 0; i < 1000; i++) {
list.push({
key: i,
name: '張三'
});
}
this.list = list;
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue組件高級(jí)通訊之$attrs與$listeners
這篇文章主要為大家介紹了Vue組件高級(jí)通訊之$attrs與$listeners使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
使用vue-video-player實(shí)現(xiàn)直播的方式
在開發(fā)期間使用過(guò)video.js、mui-player等插件,發(fā)現(xiàn)這些video插件對(duì)移動(dòng)端的兼容性都不友好,最后發(fā)現(xiàn)一個(gè)在移動(dòng)端兼容不錯(cuò)的插件vue-video-player,下面通過(guò)場(chǎng)景分析給大家介紹使用vue-video-player實(shí)現(xiàn)直播的方法,感興趣的朋友一起看看吧2022-01-01
vue?el-input設(shè)置必填提示功能(單個(gè)與多個(gè))
有的功能需要設(shè)置必填項(xiàng),當(dāng)然也需要判斷是不是添上了,下面這篇文章主要給大家介紹了關(guān)于vue?el-input設(shè)置必填提示功能(單個(gè)與多個(gè))的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02

