一款react native 的聊天UI框架,该框架只是UI层的封装,不做任何IM SDK 的集成,需要IM SDK 的可以自己集成第三方SDK。


npm install git+https://github.com/25juan/react-native-chat-ui.git --save
import Chat,{ MessageList,MessageInput } from "./react-native-chatui" ;
这里导出了Chat、MessageList、MessageInput,建议用Chat 组件就可以了,MessageList和MessageInput是用来自己
深度定制的组件,Chat 组件将会继承MessageList、MessageInput的所有属性,并且会把对应的属性放到对应的组件上面。
使用方法参照example.js
| 属性 |
含义 |
数据类型 |
默认值 |
| onLoad |
Chat 初始化完成之后所执行的回调函数 |
function |
(messageList,messageInput)=>{} |
| 属性 |
含义 |
数据类型 |
默认值 |
| isShowIncomingDisplayName |
显示对方的用户名 |
boolean |
true |
| isShowOutgoingDisplayName |
显示自己的用户名 |
boolean |
false |
| renderMessage |
自定义消息渲染 |
function |
(messageProps)=>{} |
| onLoadMoreAsync |
下拉加载更多的回调函数,请在合适的时机执行callback 函数 |
function |
(callback)=>{} |
| onMessagePress |
点击消息事件 |
function |
(message)=>{} |
| onFailPress |
消息发送失败红色感叹号点击事件 |
function |
(message)=>{} |
| onMessageLongPress |
消息长按事件 |
function |
(message)=>{} |
| onAvatarPress |
头像点击事件 |
function |
(message)=>{} |
| onScroll |
消息列表滚动事件 |
function |
()=>{} |
| onPhonePress |
消息为电话号码的时候点击事件 |
function |
(tel)=>{} |
| onUrlPress |
消息为url 的时候点击事件 |
function |
(url)=>{} |
| onEmailPress |
消息为电子邮件的时候点击事件 |
function |
(email)=>{} |
| renderLoadEarlier |
自定义的显示更早之前的消息渲染 |
function |
(props)=>{} |
| containerStyle |
消息列表一行容器的样式 |
object |
{ left:{ viewProps },right:{ viewProps } } |
| wrapperStyle |
bubble样式 |
object |
{ left:{ viewProps },right:{ viewProps } } |
| textStyle |
bubble 文本样式 |
object |
{ left:{ viewProps },right:{ viewProps } } |
| canLoadMore |
是否显示查看历史消息文字 |
boolean |
false |
| earlierTextStyle |
查看历史消息 样式 |
object |
{ viewProps } |
| earlierContainerStyle |
查看历史消息 容器样式 |
object |
{ viewProps } |
| earlierWrapperStyle |
包裹文本样式 |
object |
{ viewProps } |
| onLoadMoreAsync |
点击查看历史消息所触发的事件 |
function |
()=> { } |
| isLoadingEarlier |
点击查看历史消息 文本是不是显示一个loading 框 |
boolean |
|
| onMessageListTouch |
当消息列表手指按下的时候所触发的事件 |
function |
()=>{} |
| 方法 |
含义 |
参数 |
默认参数 |
| scrollToBottom |
滚动到底部 |
无 |
无 |
| scrollToTop |
滚动到顶部 |
无 |
无 |
| appendToTop |
追加一条消息到顶部 |
message:array |
array |
| appendToBottom |
追加一条消息到底部 |
message:array |
array |
| updateMsg |
更新消息 |
message |
null |
| deleteMsg |
删除消息 |
msgid |
null |
| 属性 |
含义 |
数据类型 |
默认值 |
| onHeightChange |
输入框高度变化的函数 |
function |
()=>{} |
| startRecording |
开始录制语音消息回调函数 |
function |
()=>{} |
| stopRecording |
停止录制语音消息回调函数 |
function |
(canceled)=>{} |
| onEndReachedRecording |
手指滑动到取消发送的距离的时候触发 |
function |
()=>{} |
| onReachedRecording |
手指滑动时触发的回调函数 |
function |
()=>{} |
| onImagePicker |
输入框工具栏 图片 点击事件回调函数 |
function |
()=>{} |
| onCameraPicker |
输入框工具栏 相机 点击事件回调函数 |
function |
()=>{} |
| onLocationClick |
输入框工具栏 位置 点击事件回调函数 |
function |
()=>{} |
| renderTools |
输入框工具栏 自定义渲染 |
function |
(tools)=>tools |
| renderEmoji |
输入框工具栏 自定义渲染 |
function |
(emojis)=>emojis |
| 方法 |
含义 |
参数 |
默认参数 |
| dismiss |
关闭表情选择和工具选择 |
无 |
无 |
let message = {
msgId: "msgid", // 消息 id
status: "send_failed", // 消息状态:send_failed(发送失败)、send_success(发送成功)、send_going(发送中)
text:"hello world!",//消息文本
msgType: "text", // 消息类型
isOutgoing: true,//true 表示当前消息在右边渲染,false 表示当前消息渲染在左边
fromUser: {
_id: "", // 用户的id
name: "sgellar", // 用户名
avatar: "http://app.yunsdt.com/app/images/wechat-friends.png" // 用户头像
}
}
let message = {
msgId: "msgid", // 消息 id
status: "send_failed", // 消息状态:send_failed(发送失败)、send_success(发送成功)、send_going(发送中)
msgType: "image",// 消息类型
extend:{
imageHeight:80, // 图片在消息列表展示高度
imageWidth:50,// 图片在消息列表展示宽度
thumbPath:"http://app.yunsdt.com/app/images/wechat-friends.png",//图片路径(android本地图片需要自带file:/// 前缀)
},
isOutgoing: true,//true 表示当前消息在右边渲染,false 表示当前消息渲染在左边
fromUser: {
_id: "", // 用户的id
name: "sgellar", // 用户名
avatar: "http://app.yunsdt.com/app/images/wechat-friends.png" // 用户头像
}
}
let message = {
msgId: "msgid", // 消息 id
status: "send_failed", // 消息状态:send_failed(发送失败)、send_success(发送成功)、send_going(发送中)
title:"四川省成都市", // 地理位置消息显示标题
msgType: "location", // 消息类型
isOutgoing: true,//true 表示当前消息在右边渲染,false 表示当前消息渲染在左边
fromUser: {
_id: "", // 用户的id
name: "sgellar", // 用户名
avatar: "http://app.yunsdt.com/app/images/wechat-friends.png" // 用户头像
}
}
let message = {
msgId: "msgid", // 消息 id
status: "send_failed", // 消息状态:send_failed(发送失败)、send_success(发送成功)、send_going(发送中)
playing:true, // 表示消息是不是在播放中
duration:1000, // 声音时长(单位ms)
msgType: "voice", // 消息类型
isRead:false,// 表示消息未读、true 表示已读
isOutgoing: true,//true 表示当前消息在右边渲染,false 表示当前消息渲染在左边
fromUser: {
_id: "", // 用户的id
name: "sgellar", // 用户名
avatar: "http://app.yunsdt.com/app/images/wechat-friends.png" // 用户头像
}
}