网站首页 > 精选文章 正文

1. 使用第三方组件库如何更改样式?
在vue开发中,经常运用element-ui、vant等组件库,但是很多时候产品需要我们更改样式,这时我们可以写一个专门的样式文件-全局引用。还有一种方法就是一层层地找UI库的样式层级(十分麻烦)。
在开发中遇到一个需求,后端返给我一段html代码,我去展示(移动端)。在html代码中有图片,尺寸很大,会导致移动端横屏滚动,这时可以使用>>>或者/deep/,即vue的深度作用选择器来设置。
‘>>>’只对css起作用,想对less或者sass生效需要用/deep/
<style scoped>
<!--viewpoint是本页面最外层的class名-->
    .viewpoint >>> img{ 
        width:90%;
    }
</style>
<style lang='less' scoped>
.viewpoint{
    /deep/ img{
       width:90%; 
    }
}
</style>2. class和style如何动态绑定?
class可以通过对象语法和数组语法进行绑定
- 对象语法:
 
<div v-bind:class="{ active: isActive, 'text-danger': hasError }"></div> 
data: { 
    isActive: true, 
    hasError: false 
}- 数组语法:
 
<div v-bind:class="[isActive ? activeClass : '', errorClass]"></div> 
data: { 
    activeClass: 'active',
    errorClass: 'text-danger'
}style也可以通过对象语法和数组语法进行绑定
- 对象语法:
 
<div v-bind:style="{ color: activeColor, fontSize: size + 'px' }"></div> 
data: { 
    activeColor: 'red', 
    size: 30 
}- 数组语法:
 
<div v-bind:class="[styleColor,styleSize]"></div> 
data: { 
    styleColor: {
        color: 'red'
    },
    styleSize: {
        font-size: '30px'
    }
}3. 父组件可以监听到子组件的生命周期吗?
比如有父组件 Parent 和子组件 Child,如果父组件监听到子组件挂载 mounted 就做一些逻辑处理,可以通过以下写法实现:
// Parent.vue 
<Child @mounted="doSomething"/> 
// Child.vue 
mounted() { 
    this.$emit("mounted"); 
}以上需要手动通过 $emit 触发父组件的事件,更简单的方式可以在父组件引用子组件时通过 @hook 来监听即可,如下所示:
// Parent.vue 
<Child @hook:mounted="doSomething"/> 
doSomething() { 
    console.log('父组件监听到 mounted 钩子函数 ...'); 
}
// Child.vue 
mounted() { 
    console.log('子组件触发 mounted 钩子函数 ...');
}
// 以上输出顺序为: 
// 子组件触发 mounted 钩子函数 ... 
// 父组件监听到 mounted 钩子函数 ...当然 @hook 方法不仅仅是可以监听 mounted,其它的生命周期事件,例如:created,updated 等都可以监听
4. 解决vuex刷新数据丢失的方法
??产生原因:因为store里的数据是保存在运行内存中的,所以刷新页面会重新加载vue实例,vuex中的数据会被重新赋值。
??解决办法:选择合适的客户端存储(sessionStorage),首次加载内容为空,local storage会保留上次的值需要清空。
??在app.vue 的created中监听beforeunload(页面刷新事件),首先在加载时,读取sessionStorage里的状态信息。此时用vuex.store的replaceState方法,替换store的根状态。触发时将状态管理中的state存储到本地sessionStorage
 export default{
    name: 'App',
    created () {
     //在页面加载时读取sessionStorage里的状态信息
       if(sessionStorage.getItem("store") ) {
          this.$store.replaceState(Object.assign({}, this.$store.state,JSON.parse(sessionStorage.getItem("store"))))
    }
     //在页面刷新时将vuex里的信息保存到sessionStorage里
      window.addEventListener("beforeunload",()=>{
        sessionStorage.setItem("store",JSON.stringify(this.$store.state)
    })
  }
}
    
猜你喜欢
- 2024-12-11 vue中如何在自定义组件上使用v-model和.sync
 - 2024-12-11 三种方法实现Vue路由跳转时自动定位在页面顶部
 - 2024-12-11 三、Uni-app + vue3 页面如何跳转及传参?
 - 2024-12-11 Vue3学习手册 vue3教学视频
 - 2024-12-11 vue3 - 内置组件Teleport的使用 vue tooltip组件
 - 2024-12-11 Vue 中 强制组件重新渲染的正确方法
 - 2024-12-11 Vue技巧一:了解一下Vue中nextTick的用法
 - 2024-12-11 Vue3的使用ref vue3.0中的ref
 - 2024-12-11 vue3.x新特性之setup函数,看完就会用了
 - 2024-12-11 vue3 学习笔记 (二)——axios 的使用有变化吗?
 
- 最近发表
 
- 标签列表
 - 
- 向日葵无法连接服务器 (32)
 - git.exe (33)
 - vscode更新 (34)
 - dev c (33)
 - git ignore命令 (32)
 - gitlab提交代码步骤 (37)
 - java update (36)
 - vue debug (34)
 - vue blur (32)
 - vscode导入vue项目 (33)
 - vue chart (32)
 - vue cms (32)
 - 大雅数据库 (34)
 - 技术迭代 (37)
 - 同一局域网 (33)
 - github拒绝连接 (33)
 - vscode php插件 (32)
 - vue注释快捷键 (32)
 - linux ssr (33)
 - 微端服务器 (35)
 - 导航猫 (32)
 - 获取当前时间年月日 (33)
 - stp软件 (33)
 - http下载文件 (33)
 - linux bt下载 (33)
 
 
