react-native - 如何在反应原生聊天应用程序中实现类似 Whatsapp 的蓝色刻度功能
问题描述
我正在构建一个运行良好的聊天应用程序,但现在我想实现blue tick
一个功能来检查任何一条消息seen or not
。我正在使用socket.io
和react-native-gifted-chat
在这个应用程序中。我正在努力寻找一种方法来知道如何做到这一点。我访问了许多链接,但没有得到清晰的图片。react-native-gifted-chat 描述了为此使用renderTicks
函数,但我无法理解它的实现。
渲染提示
renderTicks = (message) => {
const {currentMessage, renderTicks, user} = this.props;
if (renderTicks && currentMessage) {
return renderTicks(currentMessage);
}
if (currentMessage && user && currentMessage.user._id !== user._id) {
return null;
}
if (
currentMessage &&
(currentMessage.sent || currentMessage.received || currentMessage.pending)
) {
return (
<View style={styles.content.tickView}>
{!!currentMessage.sent && (
<Text style={[styles.content.tick, this.props.tickStyle]}>✓</Text>
)}
{!!currentMessage.received && (
<Text style={[styles.content.tick, this.props.tickStyle]}>✓</Text>
)}
{!!currentMessage.pending && (
<Text style={[styles.content.tick, this.props.tickStyle]}></Text>
)}
</View>
);
}
return null;
};
天才聊天
<GiftedChat
..........
renderTicks={(message) => this.renderTicks(message)}
/>
这里currentMessage和renderTicks都来了undefined。
我在这里做错了什么,请赐教。
或者
任何人都可以用 renderTicks 的示例代码帮助我。
反应原生版本 = 0.62.2
提前致谢。
解决方案
您需要从接收者端更新消息对象,当接收者打开聊天屏幕组件时,您可以使用 useEffect 函数在服务器端对消息对象进行变异。就像它将读取属性设置为true。套接字将自动通知发送者对象已更改,发送者将重新获取聊天列表,并将读取属性设置为 true。并且有天赋的聊天会显示一个蓝色的勾号。
推荐阅读
- javascript - 无法在 Discord.js V13 中读取未定义的属性(读取“删除”)
- html - 如何将此文本对齐在我的 CSS 网格中居中?
- node.js - Phaser3 helloworld 的打字稿编译耗时太长
- javascript - 如何在函数的 if 条件中使用样式可见性?
- c# - 通过 Microsoft Graph 从 Azure AD 获取安全组的成员
- java - 如何在 IntelliJ 2021.2.2 中使用 Lombok 插件?
- mysql - 将带有 SUM 和许多 WHERE 的子查询转换为 Join 结构以提高性能
- javascript - 在嵌套状态数组上设置状态 - > 未捕获的错误(承诺中) TypeError:无法读取未定义的属性
- python - 如何将 KerasTensor 转换为张量(Tensorflow)?
- python - 循环函数的输出不正确(For 和 While)