ReadMore 阅读更多
用于长文本内容的展开收起,支持自定义展开高度、文案和渐变遮罩。适用于需要控制长内容展示的场景。
代码示例
<template>
<zk-theme type="page" :padding="30" showBack navbarTitle=" 内容隐藏展开 ">
<zk-read-more :max-height="500" @toggle="onToggle">
<zk-parse :content="articleContent"></zk-parse>
</zk-read-more>
</zk-theme>
</template>
<script>
export default {
data() {
return {
articleContent: `
<h2 style="font-size: 36rpx; font-weight: bold; margin-bottom: 30rpx;">深入理解Vue3核心特性</h2>
<section style="margin-bottom: 30rpx;">
<h3 style="font-size: 32rpx; font-weight: bold; margin-bottom: 20rpx; color: #2c3e50;">1. Composition API</h3>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">Composition API是Vue3最重要的特性之一,它提供了一种全新的组织组件逻辑的方式。与Vue2的Options API相比,Composition API让我们能够更灵活地组织和重用组件逻辑。通过setup函数,我们可以在一个地方完成响应式数据定义、计算属性、方法和生命周期钩子的设置。</p>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">使用Composition API,我们可以将相关的逻辑代码组织在一起,这使得代码更容易理解和维护。例如,所有与用户认证相关的逻辑可以放在一个组合函数中,所有与表单处理相关的逻辑可以放在另一个组合函数中。</p>
</section>
<section style="margin-bottom: 30rpx;">
<h3 style="font-size: 32rpx; font-weight: bold; margin-bottom: 20rpx; color: #2c3e50;">2. 响应式系统升级</h3>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">Vue3的响应式系统经过了完全的重写,现在基于ES6的Proxy来实现,不再使用Object.defineProperty。这带来了几个重要的改进:首先,新的响应式系统可以监听到数组索引的变化和对象属性的添加/删除;其次,性能得到了显著提升;最后,响应式系统现在可以独立使用。</p>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">ref和reactive是两个最基本的响应式API。ref主要用于基本类型数据,而reactive用于对象类型数据。这种区分让响应式系统的使用更加清晰和高效。</p>
</section>
<section style="margin-bottom: 30rpx;">
<h3 style="font-size: 32rpx; font-weight: bold; margin-bottom: 20rpx; color: #2c3e50;">3. 性能优化</h3>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">Vue3在性能方面做了大量优化。首先是编译优化,引入了静态提升,将静态的模板内容提升到渲染函数之外,避免了重复创建。其次是Fragment的支持,允许组件有多个根节点,减少了不必要的DOM嵌套。</p>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">得益于静态树提升(Static Tree Hoisting)和Patch Flag优化,Vue3的更新性能比Vue2提升了1.3~2倍,内存占用减少了54%。这些优化使得Vue3在处理大规模应用时表现更加出色。</p>
</section>
<section style="margin-bottom: 30rpx;">
<h3 style="font-size: 32rpx; font-weight: bold; margin-bottom: 20rpx; color: #2c3e50;">4. TypeScript支持</h3>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">Vue3是用TypeScript重写的,这意味着它提供了更好的类型推导和类型检查。开发者可以享受到更好的IDE支持,包括代码补全和类型检查。这不仅提高了开发效率,还能够在开发阶段发现潜在的问题。</p>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">在Vue3中使用TypeScript变得更加简单和自然,不再需要复杂的类型声明和装饰器。组合式API的设计天生就与TypeScript配合得很好。</p>
</section>
<section style="margin-bottom: 30rpx;">
<h3 style="font-size: 32rpx; font-weight: bold; margin-bottom: 20rpx; color: #2c3e50;">5. 新的组件特性</h3>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">Teleport组件允许我们将组件的一部分模板"传送"到当前组件DOM树之外的其他位置。这对于实现模态框、通知提示等全局UI组件特别有用。</p>
<p style="font-size: 28rpx; line-height: 1.8; margin-bottom: 16rpx; color: #444;">Suspense组件提供了一种优雅的方式来处理异步组件和异步数据。它允许我们在等待异步内容加载时显示加载状态,提升了用户体验。</p>
</section>
<section style="margin-bottom: 30rpx;">
<h3 style="font-size: 32rpx; font-weight: bold; margin-bottom: 20rpx; color: #2c3e50;">总结</h3>
<p style="font-size: 28rpx; line-height: 1.8; color: #444;">Vue3带来了许多激动人心的新特性和改进,不仅提升了开发体验,还带来了显著的性能提升。这些改进使得Vue3成为一个更加强大和现代化的前端框架。随着生态系统的不断完善,Vue3必将在未来的前端开发中发挥更大的作用。</p>
</section>
`
}
},
methods: {
onToggle(expanded) {
console.log('内容展开状态:', expanded)
}
}
}
</script>
<style lang="scss">
.demo {
padding: 30rpx;
background-color: #ffffff;
}
</style>
API
Props 属性
参数 |
说明 |
类型 |
默认值 |
maxHeight |
收起状态下的最大高度(rpx) |
number |
200 |
defaultExpanded |
是否默认展开 |
boolean |
false |
expandText |
展开按钮的文字 |
string |
展开阅读更多 |
collapseText |
收起按钮的文字 |
string |
收起 |
showMask |
是否显示渐变遮罩 |
boolean |
true |
textColor |
展开/收起按钮的文字颜色 |
string |
#2979ff |
Events 事件
事件名 |
说明 |
回调参数 |
toggle |
展开/收起状态改变时触发,可用于外部状态同步 |
expanded: boolean(true 表示展开,false 表示收起) |
Slots
注意事项
- 组件会自动判断内容高度,只有当内容超过设定的 maxHeight 时才会显示展开/收起按钮
- 在 NVUE 环境下,渐变遮罩的实现可能会略有差异
- 建议将较长的文本内容放置在 text 组件内,以获得更好的性能和体验