一款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" // 用户头像
}
}