项目简介
本项目是基于React框架开发的即时通讯输入框组件,具备Emoji表情插入、@成员功能、多会话输入框缓存、图片与文件插入等特性,能为即时通讯应用提供便捷的输入解决方案。
项目的主要特性和功能
- Emoji表情插入:可将Emoji表情插入输入框显示。
- @成员功能:输入@时弹出成员列表,在输入框高亮提示,支持模糊搜索。
- 多会话输入框缓存:切换会话时,自动缓存和恢复输入框内容。
- 图片与文件插入:支持将图片和文件拖拽到输入框中显示。
安装使用步骤
安装
假设你已下载项目源码文件,在项目根目录下执行以下命令安装依赖:
npm i @shen9401/react-im-input pinyin-match
使用
以下是一个简单的使用示例: ```jsx import ImInput from '@shen9401/react-im-input' import { useState, useRef } from 'react';
function App(){
const [out,setOut] = useState
function sendMsg(list:EMsgItem[]){ setOut(list) }
function handleEmojiClick(item:IEmojiItem){ imInputRef.current?.insertEmoji(item) }
return (
-
{out.map((item,index)=>
(
- {JSON.stringify(item)} ) )}
各功能使用说明
- Emoji功能:调用内部方法
imInputRef.current?.insertEmoji(item)
,其中item
需满足{ key:string, data:base64 }
结构。 - @成员功能:在props中传入
memberList
,其需满足[{ id:string,name:string, avatar:string}]
结构。 - 发送消息:在props中传入
sendMsg
,按Enter键或调用imInputRef.current?.sendMsg()
会触发sendMsg
回调。 - 直接操作InnerHTML:使用
imInputRef.current?.setInnerHTML
直接覆盖输入框内容,使用imInputRef.current?.getInnerHTML
获取输入框原生内容。 - 多会话,输入框内容缓存:
- 切换
props
上的inputId
可缓存上一次id
的输入框内容。 - 清空指定
inputId
的缓存:clearCache('inputId')
。 - 清空所有缓存:
clearCache(undefined)
。
- 切换
- 输入框显示图片:
- 拖拽图片:直接拖入图片到输入框内部即可自动展示。
- 外部插入:构造一个
FilePayload
对象,调用insertImg
方法。示例如下:js const filePayload = { fileRealName: file.name, fileSize: file.size, type: file.type, localPath: (file as any).path, // electron 扩展属性 file, }; imInputRef.current.insertImg(filePayload)
- 输入框显示文件:调用
insertFile
方法,使用方式与图片类似。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】