react实现消息显示器

 更新时间:2022年08月25日 16:03:58   作者:丶酸酸  
这篇文章主要为大家详细介绍了react实现消息显示器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了react实现消息显示器的具体代码,供大家参考,具体内容如下

效果

代码实现

完整代码:

import React from 'react';
import styles from './styles.less';
import badgeImg from '@/assets/leftmenu/badgeImg.png';
import router from 'umi/router';
import { connect } from 'dva';
import { Popover, Badge, Button, Modal } from 'antd';

function mapStateToProps({ InformationModel }) {
    return {
        InformationModel: InformationModel,
    };
}
@connect(mapStateToProps)
class Information extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            visible: false,
            unreadList: [],
            infoTitle: '',
            infoContent:'',

        };
    }
    //渲染前调用
    componentWillMount() { }

    //渲染后调用
    componentDidMount() {
        this.getunreadDatas();
    }
    //调用接口获取未读数据
    getunreadDatas() {
        let { dispatch } = this.props;
        let userid = localStorage.getItem('userid');
        let params = {
            id: userid,
            pageNum: 0,
            pageSize: 0
        }
        dispatch({ type: 'InformationModel/getunreadData', payload: { params: params, callback: this.unreadCallback.bind(this) } });
    }
    //接口回调方法
    unreadCallback(e) {
        this.setState({
            unreadList:e
        })
    }
    //查看详情
    showInfo(e) {
        let { dispatch } = this.props;
        let userid = localStorage.getItem('userid');
        let params = {
            id:e.id,
            userId:userid,
        }
        //调用接口标记已读
        dispatch({ type: 'InformationModel/getreadData', payload: { params: params, callback: this.readCallback.bind(this) } });
        this.setState({
            infoTitle:e.name,
            infoContent:e.text
        })
    }
    //标记接口回调函数
    readCallback(e){
        this.setState({
            visible: true,
        });
        //刷新列表
        this.getunreadDatas();
    }
    //显示全部
    showAllInfo(){
        router.push({
            pathname: `/cs/InformationMoreList`,
            query: {
            },
        });
    }
    //弹框确认按钮
    handleOk = e => {
        console.log(e);
        this.setState({
            visible: false,
        });
    };
    //弹框取消按钮
    handleCancel = e => {
        console.log(e);
        this.setState({
            visible: false,
        });
    };

    render() {

        const content = (
            <div className={styles.infoTabs}>
                <div className={styles.infoList}>
                    {
                        this.state.unreadList.map((item,index)=>{
                            return <div className={styles.infoRow} onClick={this.showInfo.bind(this,item)}>
                            <div className={styles.infoTitle}>{item.name}</div>
                            <div className={styles.infoContent}>{item.text}</div>
                        </div>
                        })
                    }
                    
                </div>
                <div className={styles.showAll}>
                    <Button onClick={this.showAllInfo.bind(this)} className={styles.showAllBtn}>查看全部</Button>
                </div>
            </div>
        );

        return (
            <React.Fragment>
                <div className={styles.allBox}>
                    <Popover onMouseEnter={this.getunreadDatas.bind(this)} content={content} title="消息">
                        <Badge count={this.state.unreadList.length} showZero>
                            <img src={badgeImg}></img>
                        </Badge>
                    </Popover>
                    <Modal
                        title={this.state.infoTitle}
                        visible={this.state.visible}
                        onOk={this.handleOk}
                        onCancel={this.handleCancel}
                        footer={null}
                    >
                        <p>{this.state.infoContent}</p>
                    </Modal>
                </div>
            </React.Fragment>
        );
    }
}
export default Information;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • React Ant Design树形表格的复杂增删改操作

    React Ant Design树形表格的复杂增删改操作

    这篇文章主要介绍了React Ant Design树形表格的复杂增删改操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 详解在React中跨组件分发状态的三种方法

    详解在React中跨组件分发状态的三种方法

    这篇文章主要介绍了详解在React中跨组件分发状态的三种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • react-router-dom V6的配置使用实践

    react-router-dom V6的配置使用实践

    本文主要介绍了react-router-dom V6的配置使用实践,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • React父组件调用子组件中的方法实例详解

    React父组件调用子组件中的方法实例详解

    最近做一个React项目,所有组件都使用了函数式组件,遇到一个父组件调用子组件方法的问题,下面这篇文章主要给大家介绍了关于React父组件调用子组件中方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07
  • React源码分析之useCallback与useMemo及useContext详解

    React源码分析之useCallback与useMemo及useContext详解

    这篇文章主要介绍了React useCallback与useMemo及useContext源码分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-11-11
  • 使用Electron构建React+Webpack桌面应用的方法

    使用Electron构建React+Webpack桌面应用的方法

    本篇文章主要介绍了使用Electron构建React+Webpack桌面应用的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 解读useState第二个参数的"第二个参数"

    解读useState第二个参数的"第二个参数"

    这篇文章主要介绍了useState第二个参数的"第二个参数",具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • 说说react中引入css的方式有哪些并区别在哪

    说说react中引入css的方式有哪些并区别在哪

    本文主要介绍了说说react中引入css的方式有哪些并区别在哪,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • React鼠标多选功能的配置方法

    React鼠标多选功能的配置方法

    本文给大家分享React鼠标多选功能,通过导入组件直接包裹已经设计好的列表即可,操作简单方便,对React鼠标多选相关知识感兴趣的朋友一起看看吧
    2021-05-05
  • React Hook中useState更新延迟问题及解决

    React Hook中useState更新延迟问题及解决

    这篇文章主要介绍了React Hook中useState更新延迟问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08

最新评论