TnReadMore-阅读更多
阅读更多组件一般用于收起长文本,点击展开全文。
如果当前内容需要付费查看也可以使用该组件,点击查看更多后才进行展示付费内容。
组件位置
typescript
import TnReadMore from '@tuniao/tnui-vue3-uniapp/components/read-more/src/read-more.vue'
import TnReadMore from '@tuniao/tnui-vue3-uniapp/components/read-more/src/read-more.vue'
typescript
import TnReadMore from '@/uni_modules/tuniaoui-vue3/components/read-more/src/read-more.vue'
import TnReadMore from '@/uni_modules/tuniaoui-vue3/components/read-more/src/read-more.vue'
平台差异说明
App(vue) | H5 | 微信小程序 | 支付宝小程序 | ... |
---|---|---|---|---|
√ | √ | √ | √ | 适配中 |
基础使用
在默认的slot
中放置需要展示的内容
通过height
可以设置默认显示的高度,超过该高度后会显示查看更多
按钮,默认单位为rpx
vue
<script lang="ts" setup>
const content = `噫吁嚱,危乎高哉!
蜀道之难,难于上青天!
蚕丛及鱼凫,开国何茫然!
尔来四万八千岁,不与秦塞通人烟。
西当太白有鸟道,可以横绝峨眉巅。
地崩山摧壮士死,然后天梯石栈相钩连。
上有六龙回日之高标,下有冲波逆折之回川。
黄鹤之飞尚不得过,猿猱欲度愁攀援。
青泥何盘盘,百步九折萦岩峦。
扪参历井仰胁息,以手抚膺坐长叹。
问君西游何时还?畏途巉岩不可攀。
但见悲鸟号古木,雄飞雌从绕林间。
又闻子规啼夜月,愁空山。
蜀道之难,难于上青天,使人听此凋朱颜!
连峰去天不盈尺,枯松倒挂倚绝壁。
飞湍瀑流争喧豗,砯崖转石万壑雷。
其险也如此,嗟尔远道之人胡为乎来哉!(也如此 一作:也若此)
剑阁峥嵘而崔嵬,一夫当关,万夫莫开。
所守或匪亲,化为狼与豺。
朝避猛虎,夕避长蛇,磨牙吮血,杀人如麻。
锦城虽云乐,不如早还家。
蜀道之难,难于上青天,侧身西望长咨嗟!`
</script>
<template>
<TnReadMore>
<rich-text :nodes="content" />
</TnReadMore>
</template>
<script lang="ts" setup>
const content = `噫吁嚱,危乎高哉!
蜀道之难,难于上青天!
蚕丛及鱼凫,开国何茫然!
尔来四万八千岁,不与秦塞通人烟。
西当太白有鸟道,可以横绝峨眉巅。
地崩山摧壮士死,然后天梯石栈相钩连。
上有六龙回日之高标,下有冲波逆折之回川。
黄鹤之飞尚不得过,猿猱欲度愁攀援。
青泥何盘盘,百步九折萦岩峦。
扪参历井仰胁息,以手抚膺坐长叹。
问君西游何时还?畏途巉岩不可攀。
但见悲鸟号古木,雄飞雌从绕林间。
又闻子规啼夜月,愁空山。
蜀道之难,难于上青天,使人听此凋朱颜!
连峰去天不盈尺,枯松倒挂倚绝壁。
飞湍瀑流争喧豗,砯崖转石万壑雷。
其险也如此,嗟尔远道之人胡为乎来哉!(也如此 一作:也若此)
剑阁峥嵘而崔嵬,一夫当关,万夫莫开。
所守或匪亲,化为狼与豺。
朝避猛虎,夕避长蛇,磨牙吮血,杀人如麻。
锦城虽云乐,不如早还家。
蜀道之难,难于上青天,侧身西望长咨嗟!`
</script>
<template>
<TnReadMore>
<rich-text :nodes="content" />
</TnReadMore>
</template>
自定义展开、收起操作提示内容
- 设置
expand-text
可以自定义展开操作提示内容 - 设置
expand-icon
可以自定义展开操作图标 - 设置
fold-text
可以自定义收起操作提示内容 - 设置
fold-icon
可以自定义收起操作图标
vue
<template>
<TnReadMore
expand-text="付费查看"
expand-icon="lock"
fold-text="收起"
fold-icon="up-arrow"
>
<rich-text :nodes="content" />
</TnReadMore>
</template>
<template>
<TnReadMore
expand-text="付费查看"
expand-icon="lock"
fold-text="收起"
fold-icon="up-arrow"
>
<rich-text :nodes="content" />
</TnReadMore>
</template>
拦截展开操作、动态获取内容的高度
通过before-expand
可以拦截展开操作,返回false
或者Promise
切reject
则不会展开
vue
<script lang="ts" setup>
import { ref } from 'vue'
import type { TnReadMoreInstance } from '@tuniao/tnui-vue3-uniapp'
const readMoreRef = ref<TnReadMoreInstance>()
const showUnLockContent = ref(false)
const beforeExpand = () => {
if (showUnLockContent.value) {
return true
}
return new Promise<boolean>((resolve) => {
uni.showLoading({
title: '解锁中....',
})
setTimeout(() => {
uni.hideLoading()
showUnLockContent.value = true
readMoreRef.value?.resetContentHeight()
resolve(true)
}, 2000)
})
}
</script>
<template>
<TnReadMore ref="readMoreRef" :before-expand="beforeExpand">
<rich-text :nodes="content" />
<rich-text v-if="showUnLockContent" :nodes="unLockContent" />
</TnReadMore>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import type { TnReadMoreInstance } from '@tuniao/tnui-vue3-uniapp'
const readMoreRef = ref<TnReadMoreInstance>()
const showUnLockContent = ref(false)
const beforeExpand = () => {
if (showUnLockContent.value) {
return true
}
return new Promise<boolean>((resolve) => {
uni.showLoading({
title: '解锁中....',
})
setTimeout(() => {
uni.hideLoading()
showUnLockContent.value = true
readMoreRef.value?.resetContentHeight()
resolve(true)
}, 2000)
})
}
</script>
<template>
<TnReadMore ref="readMoreRef" :before-expand="beforeExpand">
<rich-text :nodes="content" />
<rich-text v-if="showUnLockContent" :nodes="unLockContent" />
</TnReadMore>
</template>
vue
<script lang="ts" setup>
import { ref } from 'vue'
import type { TnReadMoreInstance } from '@/uni_modules/tuniaoui-vue3'
const readMoreRef = ref<TnReadMoreInstance>()
const showUnLockContent = ref(false)
const beforeExpand = () => {
if (showUnLockContent.value) {
return true
}
return new Promise<boolean>((resolve) => {
uni.showLoading({
title: '解锁中....',
})
setTimeout(() => {
uni.hideLoading()
showUnLockContent.value = true
readMoreRef.value?.resetContentHeight()
resolve(true)
}, 2000)
})
}
</script>
<template>
<tn-read-more ref="readMoreRef" :before-expand="beforeExpand">
<rich-text :nodes="content" />
<rich-text v-if="showUnLockContent" :nodes="unLockContent" />
</tn-read-more>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
import type { TnReadMoreInstance } from '@/uni_modules/tuniaoui-vue3'
const readMoreRef = ref<TnReadMoreInstance>()
const showUnLockContent = ref(false)
const beforeExpand = () => {
if (showUnLockContent.value) {
return true
}
return new Promise<boolean>((resolve) => {
uni.showLoading({
title: '解锁中....',
})
setTimeout(() => {
uni.hideLoading()
showUnLockContent.value = true
readMoreRef.value?.resetContentHeight()
resolve(true)
}, 2000)
})
}
</script>
<template>
<tn-read-more ref="readMoreRef" :before-expand="beforeExpand">
<rich-text :nodes="content" />
<rich-text v-if="showUnLockContent" :nodes="unLockContent" />
</tn-read-more>
</template>
API
Props
属性名 | 说明 | 类型 | 默认值 | 可选值 |
---|---|---|---|---|
expand | 默认是否展开 | Boolean | false | true |
height | 默认显示内容的高度,默认单位是 rpx | Number | 250 | - |
show-fold | 是否显示收起按钮 | Boolean | true | false |
expand-text | 展开显示的文案 | String | 显示更多 | - |
expand-icon | 展开显示的图标 | String | down | 图标有效值 |
fold-text | 收起显示的文案 | String | 收起 | - |
fold-icon | 收起显示的图标 | String | up | 图标有效值 |
tip-color | 提示文案的颜色,支持图鸟内置的颜色值、hex、rgb、rgba | String | - | - |
before-expand | 展开前回调 | () => Promise<boolean> |boolean | - | - |
Emits
事件名 | 说明 | 类型 |
---|---|---|
expand | 展开时触发 | () => void |
fold | 收起时触发 | () => void |
Expose
函数名 | 说明 | 类型 |
---|---|---|
resetContentHeight | 重新设置内容容器的高度 | () => void |