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

名称 说明
default 需要展示的内容

注意事项