实现效果

在处理错误信息提示时,如果信息太多,一次性展示的话,看着很乱,那有没有更好的展示方式呢?

经过一番讨论,找到了类似于某乎上的这种效果,如下图:

既能告诉用户后续还有信息,也没有一下子显示全部,给人感觉很累赘。

该如何实现呢?

实现思路

根据上述需求,大概的想法如下:

  • 首先页面需要两个容器,这里简称div吧,一个div用来展示数据,一个div用来放按钮
  • 展示数据的div默认高度固定,当内容超过高度时,隐藏(overflow-y:hidden)
  • 按钮默认情况下需要展示,并且当用户点击按钮后,按钮消失
  • 点击按钮后,展示数据的div高度重新设置为自适应高度

最终实现

封装组件

js代码

import React, { useState } from 'react';
import styles from './LookMore.less';
interface ILookMore {
  content: string;
}
const LookMore: React.FC<ILookMore> = (props) => {
  const { content } = props;
  const [isLookAll, setIsLookAll] = useState<boolean>(true);
  const [height, setHeight] = useState<string>('86px');
  function lookAll() {
    setIsLookAll(true);
    setHeight('auto');
  }
  return (
    <div className={styles.container}>
      <div className={styles.content} style={{ height }}>
        {content}
      </div>
      {isLookAll && (
        <a className={styles.look} onClick={() => lookAll()}>
          点击查看全部
        </a>
      )}
    </div>
  );
};
export default LookMore;

样式代码

.container{
  .content{
    overflow-y: hidden;
  }
  .look{
    display: block;
    position: absolute;
    bottom: 14px;
    height: 50px;
    line-height: 50px;
    background: linear-gradient(rgba(250, 250, 250, 0.8), rgb(251 250 248) 100%);
    width: 288px;
    text-align: center;
  }
}

使用组件

import React from 'react';
import { notification } from 'antd';
import LookMore from '@/pages/lookMore/component/LookMore';
const Index: React.FC<{}> = () => {
  const contNode = (
    <div>
      <p>根据上述需求,大概的想法如下:</p>
      <p>首先页面需要两个容器,这里简称div吧,一个div用来展示数据,一个div用来放按钮</p>
      <p>展示数据的div默认高度固定,当内容超过高度时,隐藏(overflow-y:hidden)</p>
      <p>按钮默认情况下需要展示,并且当用户点击按钮后,按钮消失</p>
      <p>点击按钮后,展示数据的div高度重新设置为自适应高度</p>
    </div>
  );
  return (
    <div>
      <a
        onClick={() => {
          notification.info({
            message: '我是提示信息的标题',
            description: <LookMore content={contNode} />,
            duration: 200,
          });
        }}
      >
        点击出现弹窗
      </a>
    </div>
  );
};
export default Index;

实现效果



版权声明:本文为wuChiSha原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/wuChiSha/article/details/122688359