x icon indicating copy to clipboard operation
x copied to clipboard

onUpdate时消息列表不会实时渲染吗?

Open hayiii opened this issue 11 months ago • 14 comments

Image

只有在onSuccess之后消息列表才会开始渲染

hayiii avatar Jan 17 '25 03:01 hayiii

onUpdate 时消息列表不实时渲染的问题可能与组件的状态更新机制有关。通常情况下,React 组件的渲染是由状态或属性的变化触发的。如果 onUpdate 没有正确地更新组件的状态,可能会导致渲染延迟到 onSuccess 之后。

以下是一些可能的解决方案:

  1. 检查状态更新:确保在 onUpdate 中正确地更新了组件的状态。状态更新应该是同步的,以便 React 能够立即重新渲染组件。

  2. 使用 setState:如果你使用的是类组件,确保在 onUpdate 中使用 this.setState() 方法来更新状态。

  3. 使用 useStateuseEffect:如果你使用的是函数组件,确保在 onUpdate 中使用 useState 钩子来更新状态,并使用 useEffect 钩子来监听状态变化。

  4. 检查渲染逻辑:确保渲染逻辑中没有阻止组件更新的条件语句。

如果这些建议没有解决问题,可能需要查看更具体的代码片段以提供进一步的帮助。

如果您有更多的细节或代码示例,可以分享出来,我会尽力帮助您解决问题。

🪧 Tips For further assistance, please describe your question in the comments and @petercat-assistant to start a conversation with me.

petercat-assistant[bot] avatar Jan 17 '25 03:01 petercat-assistant[bot]

我猜测可能和这个 issue 是一个问题:https://github.com/ant-design/x/issues/299

YumoImer avatar Jan 17 '25 03:01 YumoImer

我猜测可能和这个 issue 是一个问题:#299

我删掉了loading那一行,也还是一样的效果

Image

hayiii avatar Jan 17 '25 05:01 hayiii

我删掉了loading那一行,也还是一样的效果

那麻烦给个最简复现仓库吧

YumoImer avatar Jan 17 '25 05:01 YumoImer

这应该是有问题的 关闭loading 就不知道请求是否返回 开启loading就没有流式输出

fuyunzhishang avatar Feb 09 '25 10:02 fuyunzhishang

一样的问题,有找到原因没

sucls avatar Feb 18 '25 01:02 sucls

可以通过定义requestPlaceholder值A,在Bubble.List中items根据A的值主动控制loading状态,即可达到loading效果以及流式输出

shaodushu avatar Feb 18 '25 07:02 shaodushu

Image 只有在onSuccess之后消息列表才会开始渲染

一样的问题,官方示例里面的 setInterval 可行,换成正常的 fetch 就 G 了~

lxfu1 avatar Feb 18 '25 10:02 lxfu1

Image

这个 loading 赋值的含义不对,应该区分两个 loading 状态:

  1. request 请求的 loading 状态,这个状态用来控制 isRequesting 的值
  2. stream 迭代过程中的 loading 状态,这个是流处理过程的状态 其中 2 不应该再使用 loading,而应该换一个新值来表示,譬如 streamLoading,这样就不会阻塞卡片的渲染逻辑了

DZG-MELODY avatar Feb 22 '25 12:02 DZG-MELODY

我也有这个问题 update不生效

94dreamer avatar Feb 23 '25 16:02 94dreamer

@94dreamer @fuyunzhishang @DZG-MELODY @shaodushu @lxfu1 各位有重现仓库或 Codesandbox 么?

afc163 avatar Feb 24 '25 01:02 afc163

Image

这个 loading 赋值的含义不对,应该区分两个 loading 状态:

  1. request 请求的 loading 状态,这个状态用来控制 isRequesting 的值
  2. stream 迭代过程中的 loading 状态,这个是流处理过程的状态 其中 2 不应该再使用 loading,而应该换一个新值来表示,譬如 streamLoading,这样就不会阻塞卡片的渲染逻辑了

在useXChat里把Message扩展下就行了吧,不要使用默认的string类型,这样在渲染的时候就灵活了

sucls avatar Feb 24 '25 02:02 sucls

@94dreamer @fuyunzhishang @DZG-MELODY @shaodushu @lxfu1 各位有重现仓库或 Codesandbox 么?

https://stackblitz.com/edit/react-pzxhquqb?file=demo.tsx

重现代码可以参考这个在线案例

Image

AmorDiamond avatar Mar 28 '25 10:03 AmorDiamond

@94dreamer @fuyunzhishang @DZG-MELODY @shaodushu @lxfu1 各位有重现仓库或 Codesandbox 么?

https://stackblitz.com/edit/react-pzxhquqb?file=demo.tsx

重现代码可以参考这个在线案例

Image

按照这个 issue 取消 items 里的 loading 状态,可以出现正常打字效果 299

AmorDiamond avatar Mar 28 '25 10:03 AmorDiamond