网站首页 > 基础教程 正文
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-11-09 vuejs开发入门之工具安装和常用指令
- 2024-11-09 如何在Vue中动态添加类名 vue动态添加的元素进行操作
- 2024-11-09 很全面的vue面试题总结 vue面试题2020例子以及答案
- 2024-11-09 vue数据获取和属性设置 vue数据获取放在哪个阶段
- 2024-11-09 「面试题」和Vue.js有关的41个基础问题
- 2024-11-09 vue中动态指令的用法和event事件 vue动态控制hover
- 2024-11-09 VUE自定义指令 自定义指令的应用场景有哪些?
- 2024-11-09 限时分享!今天花了两小时整理出来的 30道 入门到进阶的 Vue 面试题
- 2024-11-09 VUE实战技巧,让你的代码少一点 vue怎么样
- 2024-11-09 我为什么用Vue.js 我为什么用神仙水皮肤会干
- 03-14从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布
- 03-14教你测试开发丨测试小白也能听懂的Docker讲解和应用
- 03-14Docker安装及mysql、redis实战(docker安装mysql5.7)
- 03-14Docker技术:大神整理——Harbor私服搭建和使用
- 03-14Springboot项目使用docker部署(springboot docker部署)
- 03-14Linux环境通过Dockerfile创建Tomcat镜像
- 03-14终于有人把Docker讲清楚了,Docker入门教程,原来这么简单...
- 03-14linux下面安装docker(linux安装docker报错)
- 最近发表
-
- 从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布
- 教你测试开发丨测试小白也能听懂的Docker讲解和应用
- Docker安装及mysql、redis实战(docker安装mysql5.7)
- Docker技术:大神整理——Harbor私服搭建和使用
- Springboot项目使用docker部署(springboot docker部署)
- Linux环境通过Dockerfile创建Tomcat镜像
- 终于有人把Docker讲清楚了,Docker入门教程,原来这么简单...
- linux下面安装docker(linux安装docker报错)
- DeepSeek:一分钟教会你部署Tomcat
- Docker 安装Mysql(流程、注意点、实例)
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)