-腾讯云开发者社区-腾讯云">
我正在尝试使用流react组件构建聊天前端,返回具有此结构的ChatPage
组件。
<ChatConfig config={config}>
<Chat client={client} customStyles={options?.theme}>
<ChannelList
Preview={CustomChannelPreview}
filters={filters}
sort={sort}
/>
<Channel>
<Window>
<CustomChannelHeader/>
<MessageList/>
<MessageInput Input={CustomMessageInput}/>
</Window>
<Thread/>
</Channel>
</Chat>
</ChatConfig>
因此,在用户冻结或解冻通道的同一页面中有通道列表和通道窗口。
react应用程序的FE能够使过滤器从window.location.search
应用,以便应用的过滤器只允许用户查看冻结或解冻的通道(例如,{"frozen":{"$eq":false}, .....}
)。
当用户冻结或取消冻结时,是否有方法在通道更新后重新呈现通道列表以匹配更新的通道状态?
在不重新实现onChannelUpdated函数中的整个过滤策略的情况下,能够做到这一点吗?
提前谢谢。
发布于 2022-06-28 04:36:21
ChannelList
组件接受一个key
支柱。当此支柱的值发生变化时,组件将重新呈现并匹配更新的通道状态。
在这种情况下,您可以跟踪通道列表键状态:
const generateUniqueChars = () => {
// any generation strategy you want here
}
const [channelListKey, setChannelListKey] = useState(generateUniqueChars())
const updateChannelListKey = () => {
setChannelListKey(generateUniqueChars())
}
然后,将密钥传递给ChannelList
组件:
<ChannelList key={channelListKey} />
使用function上下文或任何您喜欢的方式,您可以将updateChannelListKey
函数传递给冻结/取消冻结通道的组件。当触发冻结/解冻时,您将调用update通道列表函数,该函数更新通道列表键状态,并重新呈现通道列表以匹配新的通道状态。
https://stackoverflow.com/questions/72612746
复制相似问题