【Taro开发】-文字展开收起组件(十五)

news2024/11/24 18:43:55

Taro小程序开发

系列文章的所有文章的目录

【Taro开发】-初始化项目(一)

【Taro开发】-路由传参及页面事件调用(二)

【Taro开发】-taro-ui(三)

【Taro开发】-带token网络请求封装(四)

【Taro开发】-自定义导航栏NavBar(五)

【Taro开发】-formData图片上传组件(六)

【Taro开发】-封装Form表单组件和表单检验(七)

【Taro开发】-tabs标签页及子组件的下拉刷新(八)

【Taro开发】-简易的checkBoxGroup组件(九)

【Taro开发】-页面生成二维码及保存到本地(十)

【Taro开发】-宣传海报,实现canvas实现圆角画布/图片拼接二维码并保存(十一)

【Taro开发】-分享给好友/朋友圈(十二)

【Taro开发】-小程序自动打包上传并生成预览二维码(十三)

【Taro开发】-全局自定义导航栏适配消息通知框位置及其他问题(十四)


文章目录

  • Taro小程序开发
  • 前言
  • 1.组件代码
  • 2.使用


前言

基于Taro的微信小程序开发,主要组件库为Taro-ui
实现多行文字时可展开收起
在这里插入图片描述
在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

1.组件代码

import Taro from "@tarojs/taro";
import { Component } from "react";
import { Text, View } from "@tarojs/components";
import classNames from "classnames";
import "./index.scss";
import { getSystemInfo, stylePerInJs } from "@/utils/util";

let globalSystemInfo = getSystemInfo();
class TextShow extends Component {
  constructor() {
    super();
    this.state = {
      showAll: true,
      showFoldBtn: false
    };
  }

  componentDidMount() {
    this.props.text && this.handleTextHight();
  }

  handleTextHight = () => {
    Taro.createSelectorQuery()
      .select(`.textShow-content-text${this.props.index || 0}`)
      .boundingClientRect()
      .exec(res => {
        if (!res[0])
          setTimeout(() => {
            this.handleTextHight();
          }, 500);
        else {
          let height = res[0].height;
          if (parseInt(height / (globalSystemInfo.screenWidth / 750)) > 150) {
            this.setState({
              showAll: false,
              showFoldBtn: true
            });
          }
        }
      });
  };

  handleFoldText = () => {
    this.setState({
      showAll: !this.state.showAll
    });
  };

  render() {
    const { showAll, showFoldBtn } = this.state;
    const { text, index } = this.props;
    return (
      <View className="textShow" style={{ paddingBottom: !showAll ? 40 : 0 }}>
        <Text
          className={classNames(
            `textShow-content-text${index || 0}`,
            "font-26-sm",
            {
              "textShow-content-text-less": !showAll
            }
          )}
        >
          {text}
        </Text>
        {showAll && this.props.children}
        {showFoldBtn && (
          <View
            className="operate-text-btn"
            onClick={() => {
              this.handleFoldText();
            }}
            style={{
              position: showAll ? "relative" : "absolute"
            }}
          >
            {showAll ? "收起" : "展开"}
            {!showAll && <View className="down">{">>"}</View>}
          </View>
        )}
      </View>
    );
  }
}

export default TextShow;

@import '@/styles/variables.scss';
.textShow{
  position: relative;
  .textShow-content-text-less {
    display: -webkit-box;
    overflow: hidden;
    text-overflow: ellipsis;
    word-wrap: break-word;
    white-space: normal !important;
    -webkit-line-clamp: 4; 
    /*! autoprefixer: ignore next */
    -webkit-box-orient: vertical;
  }

  .operate-text-btn {
    font-size: $font-size-lg;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background: $color-white;
    opacity: 0.6;
    position: absolute;
    width: 100%;
    bottom: 10px;
  }

  .down{
    transform: rotate(90deg);
    width: 40px;
  }

}

2.使用

<TextShow text={'12232424141'} index={0}>
  <View>
    <Image
      src=" https://img1.baidu.com/it/u=3820760661,13510362&fm=253&fmt=auto&app=138&f=JPEG?w=700&h=467"
      className="plot-listItem-img"
    />
  </View>
</TextShow>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392550.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sonar:Win10搭建SonarQube9.8服务

需求描述 公司为项目代码配置了Sonar检测&#xff0c;最初只是想调研在VSCode中同步远程检测的方法&#xff08;现在请参考Sonar&#xff1a;VSCode配置SonarLint/SonarLint连接SonarQube&#xff09;&#xff1b;结果并没有找到靠谱的教程。。在度娘的信息海洋胡乱扑腾两天后…

Docker(七)--Docker数据卷管理及插件

文章目录一、Docker 数据卷管理1.bind mount2.docker managed volume3.bind mount与docker managed volume对比二、跨节点存储convoy卷插件一、Docker 数据卷管理 在实际使用过程中&#xff0c;我们需要把容器和数据进行隔离&#xff0c;因为容器在使用过程中可能随时要进行销…

C++:set和map(模拟实现)

目录 关联式容器 键值对 树形结构的关联式容器 set的介绍 set的使用 map的介绍 map的使用 multiset的介绍 multimap的介绍 底层结构 AVL树的概念 AVL树节点的定义 AVL树的旋转 左单旋 右单旋 先右单旋再左单旋 先左单旋再右单旋 模拟实现AVL树 红黑树 红黑树…

【C++】30h速成C++从入门到精通(stack、queuepriority_queue以及deque介绍)

stackstack的介绍https://cplusplus.com/reference/stack/stack/?kwstackstack是一种容器适配器&#xff0c;专门在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特…

详解一致性哈希算法

在单机系统中&#xff0c;所有的数据都存储在同一个服务器下&#xff0c;当数据量越来越多的时候&#xff0c;超过了单机存储容量的上限&#xff0c;就需要使用分布式存储系统&#xff0c;在分布式存储系统重&#xff0c;数据会被拆分到不同的存储服务下&#xff0c;减少单机服…

[数据结构]:12-快速排序(顺序表指针实现形式)(C语言实现)

目录 前言 已完成内容 快速排序实现 01-开发环境 02-文件布局 03-代码 01-主函数 02-头文件 03-PSeqListFunction.cpp 04-SortCommon.cpp 05-SortFunction.cpp 结语 前言 此专栏包含408考研数据结构全部内容&#xff0c;除其中使用到C引用外&#xff0c;全为C语言代…

【Linux】canal1.1.7同步MySQL8.0.3和Redis

目录前言一、MySQL8配置1. 修改my.cnf2. 重启mysql3. 建用户、授权二、Canal服务端配置1. 下载2. 修改配置3. 启动服务与验证三、Canal客户端编写1. yml配置文件添加canal服务端配置信息和Redis信息2. 配置pom文件3. 代码4. MySQL建表storage.storage5. 启动客户端与验证参考前…

中微8S6990使用过程的一些记录--GPIO初始化、定时器、PWM、ADC、休眠等外设的配置和使用

前言 最近把一款产品的代码从新唐MS51移植到了中微8S6990平台上&#xff0c;记录下移植过程遇到的各种情况。 目录前言定时器初始化、中断服务函数GPIO配置ADC模数转换初始化PWM初始化Main函数休眠的一些注意事项最后定时器初始化、中断服务函数 void TMR0_Config(void) {/*(…

keepalived+nginx 双机热备搭建

keepalivednginx 双机热备搭建一、准备工作1.1 准备两台centos7.91.2 nginx 与 keepalived软件 双机安装1.3 ip分配1.4 修改主机名1.5 关闭selinux&#xff08;双机执行&#xff09;1.6 修改hosts&#xff08;双机执行&#xff09;二、安装keepalived2.1 执行一下命令安装keepa…

MidiaPipe +stgcn(时空图卷积网络)实现人体姿态判断(单目标)

文章目录前言Midiapipe关键点检测stgcn 姿态评估效果前言 冒个泡&#xff0c;年少无知吹完的牛皮是要还的呀。 那么这里的话要做的一个东西就是一个人体的姿态判断&#xff0c;比如一个人是坐着还是站着还是摔倒了&#xff0c;如果摔倒了我们要做什么操作&#xff0c;之类的。…

【模型复现】-alexnet,nn.Sequential顺序结构构建网络

深度卷积神经网络&#xff08;AlexNet&#xff09; 在LeNet提出后的将近20年里&#xff0c;神经网络一度被其他机器学习方法超越&#xff0c;如支持向量机。虽然LeNet可以在早期的小数据集上取得好的成绩&#xff0c;但是在更大的真实数据集上的表现并不尽如人意。一方面&#…

第五章 事务管理

1.事务概念 *什么是事务&#xff1a;事务是数据库操作最基本单元&#xff0c;逻辑上是一组操作&#xff0c;要么都成功&#xff0c;要么都失败 *事务的特性&#xff08;ACID&#xff09;&#xff1a;原子性、隔离性、一致性、持久性 2.搭建事务操作环境 *模拟场景&#xff…

uart串口接收模块

uart串口接收模块 1、UART&#xff08;异步串行接口&#xff09; 串行通信&#xff1a;指利用一条数据线将资料一位位的顺序传输。   异步通信&#xff1a;以一个字符为传输单位&#xff0c;通信中两个字符间的时间间隔是不固定的&#xff0c;然而在同一个字符的两个相邻位代…

【微信小程序】-- 页面事件 - 下拉刷新(二十五)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &…

高盐废水除钙镁的技术解析

高盐废水指含有机物和至少总溶解固体(totaldissolvedsolids&#xff0c;tds)的质量分数大于3.5&#xff05;的废水&#xff0c;具有水量大&#xff0c;无机盐离子k、na、ca2、mg2、cl-、so42-等含量高&#xff0c;水质水量变化大&#xff0c;成分复杂&#xff0c;难生化降解等特…

2023年中职网络安全竞赛——CMS网站渗透解析

需求环境可私信博主 解析如下: CMS网站渗透 任务环境说明: 服务器场景:Server2206(关闭链接) 服务器场景操作系统:未知 1.使用渗透机对服务器信息收集,并将服务器中网站服务端口号作为flag提交; Flag:8089

华为套件生态

华为套件生态前言蓝牙设备华为耳机华为鼠标智慧互联超级终端多屏协同远程访问文件共享华为电脑管家我的设备控制中心前言 华为的手机、平板、电脑、耳机、手环、手表等设备可以组成华为生态。以下分享一些生态体验。 蓝牙设备 华为耳机 快速连接 在手机/电脑附近打开华为耳…

里奇RIDGID管线定位仪/探测仪维修SR-20 SR-24 SR-60

美国里奇SeekTech SR-20管线定位仪对于初次使用定位仪的用户或经验丰富的用户&#xff0c;都同样可以轻易上手使用SR-20。SR-20提供许多设置和参数&#xff0c;使得大多数复杂的定位工作变得很容易。此外&#xff0c;当你在不复杂的环境下完成些基本的定位工作时&#xff0c;这…

软件测试7

一 CS和BS软件架构 CS&#xff1a;客户端-服务器端&#xff0c;BS&#xff1a;浏览器端-服务器端 区别总结&#xff1a; 1.效率&#xff1a;c/s效率高&#xff0c;某些内容已经安装在系统中了&#xff0c;b/s每次都要加载最新的数据 2.升级&#xff1a;b/s无缝升级&#xff0c…

【Maven】(五)Maven模块的继承与聚合 多模块项目组织构建

文章目录1.前言2.模块的继承2.1.可继承的标签2.2.超级POM2.3.手动引入自定义父POM3.模块的聚合3.1.聚合的注意事项3.2.反应堆(reactor)4.依赖管理及属性配置4.1.依赖管理4.2.属性配置5.总结1.前言 本系列文章记录了 Maven 从0开始到实战的过程&#xff0c;Maven 系列历史文章清…