js实现点击查看全部/收起功能

在上一篇文章实现用js截取文本后,我的另一个需求也迎刃而解了。需求就是一段长文本需要溢出隐藏,然后点击全部时显示全部文本,点击收起又回到溢出隐藏的状态。实现的效果如下图:

实现的思路时点击全部时使用这条数据的原文本,点击收起时使用截取后的文本。而父元素的高度是由内部文本撑开的,所以点击全部时div的高度也会自动撑开。

this.state = {
    data: [],// 页面的数据
    expended: [],// 用来管理每条数据的全部/收起的数组
}

getContent = (value, index) => {
    const { expended } = this.state
      return (
        <span>
          <span>{expended[index]? value.content: noMoreWord(value.content, 50, '#0091ff')}</span>
          {this.needExpended(value, index)}
        </span>
      )
}

  //是否展示 全部/收起
  needExpended = (value, index) => {
    const { expended } = this.state
    const { content } = value
    if (getStrLength(content) > 100) {
      return (
        <span style={{color: '#0091ff'}} onClick={() => this.seeMore(index)}>{expended[index]? '收起': '全部'}</span>
      )
    }else{
      return ''
    }
  }

  seeMore = (index) => {
    const { expended } = this.state
    const newExpended = [...expended]
    newExpended[index] = !newExpended[index]
    this.setState({
      expended: newExpended
    })
  }

// react的render  
render() {
    return(
        this.state.data.map((value, index) => {
          <div>
            <div>xxx</div>
            <div>{this.getContent()}</div>
          </div>
        })
    )
}

 代码中的noMoreWord()和getStrLength()可以去看我的上一篇文章js实现一行半文本的截取_郑板桥30的博客-CSDN博客,这里有对这两个方法的详细介绍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值