【发布时间】:2020-04-03 12:26:14
【问题描述】:
我们聊天机器人的一些答案很长。网络聊天会自动滚动到底部,因此用户必须向上滚动才能到达气泡顶部并开始阅读。
我已经实现了一个自定义渲染器(react)来将答案包装到一个自定义组件中,该组件只是将答案包装到一个 div 标记中。我还实现了一段简单的代码来滚动到气泡的顶部。
const MyCustomActivityContainer = ({ children }) => {
const triggerScrollTo = () => {
if (scrollRef && scrollRef.current) {
(scrollRef.current as any).scrollIntoView({
behavior: 'smooth',
block: 'start',
})
}
}
const scrollRef: React.RefObject<HTMLDivElement> = React.createRef()
return (
<div ref={ scrollRef } onClick={ triggerScrollTo }>
{ children }
</div>
)
}
export const activityMiddleware = () => next => card => {
if (/* some conditions */) {
return (
<MyCustomActivityContainer>
{ next(card) }
</MyCustomActivityContainer>
);
} else {
return (
{ next(card) }
)
}
};
但这只有在滚动条滑块不在其最低位置时才有效(至少还有 1 个像素可以向下滚动,see here)。问题是 useScrollToBottom 钩子,如果滚动条完全向下滚动,它总是自动滚动到底部。
有没有办法覆盖滚动行为或暂时禁用 scrollToBottom 功能?
【问题讨论】:
-
如果您可以添加一个可重现的问题演示,它可能会帮助人们提供解决方案。没有它,这似乎是一个非常广泛的问题
-
@KyleMit,我深入阅读了这篇文章,还阅读了 GitHub 上给定的未解决问题。如果可能,请在 CodeSandBox 之类的地方重新发布您的问题。当然,我们可以为您提供更好的帮助。
-
感谢所有回复。我在工作和家里都很忙,但我尝试提供一个显示问题的最小工作示例,希望在下周。
标签: javascript reactjs botframework web-chat