You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BotFramework-WebChat的useScrollTo钩子报错:需为<Composer>后代组件

解决BotFramework-WebChat useScrollTo钩子报错问题

报错原因

useScrollTo 是BotFramework-WebChat的内部钩子,它依赖 <Composer> 组件提供的上下文环境才能正常工作。你的函数组件直接通过 ReactDOM.render 渲染,不在 <Composer> 的后代组件树中,因此无法获取所需的上下文,触发报错。

解决方案

将你的函数组件嵌套在 <Composer> 组件内部,确保它处于 <Composer> 的后代层级中。以下是两种常见的实现方式:

方式1:直接包裹组件

import React from 'react';
import ReactDOM from 'react-dom/client';
import { Composer } from 'botframework-webchat';
import YourCustomComponent from './YourCustomComponent'; // 你的函数组件

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <Composer>
      <YourCustomComponent />
    </Composer>
  </React.StrictMode>
);

方式2:结合WebChat组件使用

如果你的组件是WebChat界面的一部分,可将其与 <WebChat> 组件一同放在 <Composer> 内部:

import React from 'react';
import ReactDOM from 'react-dom/client';
import { Composer, WebChat } from 'botframework-webchat';
import YourCustomComponent from './YourCustomComponent';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <Composer>
      <WebChat />
      <YourCustomComponent />
      {/* 也可通过WebChat的customComponents属性注入自定义组件 */}
    </Composer>
  </React.StrictMode>
);

完成上述调整后,useScrollTo 钩子就能正常访问到 <Composer> 提供的上下文,不再触发报错。

内容的提问来源于stack exchange,提问作者swarnava112

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 13:42:06