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

如何让Dash应用的评论区展示所有历史提交的评论?

解决Dash评论区无法保存历史评论的问题

你的问题核心在于Dash回调默认是无状态的,每次提交只会返回最新评论,没有留存历史记录。要实现历史评论累加展示,需要借助dcc.Store组件存储评论列表,每次提交时把新评论追加进去,再渲染所有历史评论。

修改后的完整代码如下:

import dash
from dash import html, dcc, Input, Output, State, callback

app = dash.Dash(__name__)

layout = html.Div([
    html.H3(children='Write Comments'),
    dcc.Textarea(
        id='textarea',
        value='',
        style={'width': '100%', 'height': 200},
    ),
    html.Button('Submit', id='button', n_clicks=0),
    # 添加dcc.Store存储历史评论,storage_type可选memory/session/local
    dcc.Store(id='comments-store', data=[]),
    html.Div(id='comment-output', style={'whiteSpace': 'pre-line', 'marginTop': '20px'})
])

@callback(
    # 同时更新存储的评论数据和输出区域
    [Output('comments-store', 'data'),
     Output('comment-output', 'children')],
    Input('button', 'n_clicks'),
    # 获取输入框内容和已存储的评论列表
    State('textarea', 'value'),
    State('comments-store', 'data'),
    prevent_initial_call=True  # 防止页面加载时触发回调
)
def update_comments(n_clicks, new_comment, comments_list):
    # 过滤空评论
    if new_comment.strip():
        comments_list.append(new_comment)
    
    # 把所有评论转换成带格式的html元素,每条评论加序号和分隔线
    rendered_comments = []
    for idx, comment in enumerate(comments_list, 1):
        rendered_comments.append(html.Div([
            html.Strong(f'Comment {idx}:'),
            html.P(comment),
            html.Hr()
        ]))
    
    # 返回更新后的评论列表和渲染内容
    return comments_list, rendered_comments

if __name__ == '__main__':
    app.run_server(debug=True)

关键修改说明:

  • 新增dcc.Store:用来持久化保存评论列表,storage_type设为memory时页面刷新会清空记录,设为local则会保存在浏览器本地,下次打开仍能看到历史评论。
  • 回调多输出:同时更新存储的评论数据和输出区域,确保每次提交后历史记录被留存。
  • 评论格式化渲染:将每条评论包装成带序号、分隔线的HTML元素,提升可读性,样式可根据需求自定义调整。
  • 禁止初始触发:用prevent_initial_call=True避免页面刚加载时就执行回调。

修改后,每次提交新评论都会追加到历史列表中,输出区域会展示所有已提交的评论内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 09:41:12