用户正在编辑评论时停止实时更新?

胜利者

我的博客上有一个评论系统。事情是通过WebSockets实时更新注释。当然,在更新注释时,所有者必须能够编辑其注释。我要启用就地编辑(这意味着注释将被文本框和“保存/放弃”按钮替换)。我的React应用程序订阅套接字事件并comments在组件状态下更改数组。这意味着,当用户正在编辑评论时,如果有新内容出现,则该编辑将被残酷地停止。

话虽如此,我想到了两种可能的方法:1.在用户编辑评论时,停止实时更新(即暂时忽略套接字事件)2.继续更新评论,但继续在评论编辑器上滚动(我不这样做)不知道该如何应对)

我认为在用户编辑评论时停止实时更新是愚蠢的,所以我问你,在更新评论时应如何将编辑器保留在那里?

有关我的应用程序结构的更多信息:

我已经得到了成分<PostComments />,其state包含阵列comments该数组被渲染为一堆<Comment />

renderComments = () => {
    const { comments } = this.state;

    return comments.map( comment => {
        return (
            <Comment key={comment['comment_id']} data={comment} />
        );
    } );
};

<Comment />组件获得的静态数据来呈现(即,对象与标准形状

export const commentDataType = React.PropTypes.shape( {
    comment_id: React.PropTypes.number.isRequired,
    user_info: React.PropTypes.shape( {
        preferred_name: React.PropTypes.string.isRequired,
        profile_picture: React.PropTypes.string.isRequired,
    } ).isRequired,
    post_timestamp: React.PropTypes.number.isRequired,
    comment_text: React.PropTypes.string.isRequired,
} );

这有点。谢谢!

伊洛德·索波斯

从注释中的简短对话中得出结论-不管怎样,我认为最好的方法是currentlyEditing一旦用户打开注释进行编辑,就将注释的副本单独保存在状态树中的某个位置(可能是类似的名称)。

然后,用户可以改而编辑副本,并且您可以尽可能完整地保留逻辑。

如果用户提交,则使用特定的来保存评论的更改comment_id

展望未来,您可以选择引入,edited_timestamp以确保并发更新不会覆盖另一个更新,并在用户没有最新更改并希望保存编辑时显示警告。

这样,您将保持更新的更新,用户流和体验不会受到干扰,并且您将设法重用尽可能多的代码,同时仍然宽大而舒适地能够在站点处丢弃已编辑的更改。单击按钮,而无需担心副作用。

您通常可以在论坛和论坛上看到类似的行为和用户体验。或博客,与您的用例非常相似。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从正在编辑的CSV更新python程序,而不停止该程序?

在编辑或更新时获取所选角色

在编辑/更新时填充模态

查询当前正在编辑的数据集时的竞争条件

自动重新加载jqgrid并在编辑时停止

锁定页面/实体编辑(如果另一个用户正在编辑)

需要查看当前用户是否与创建正在编辑的记录的用户相同

在编辑父对象时更新子对象

Formik表单在编辑时不更新字段

一个Excel文件,多个编辑用户,实时更新

如何停止emacs为正在编辑的文件的文本着色?

如何获取/读取正在编辑word文档的windows用户的姓名?

在编辑表单中单击更新按钮之前,如何停止更新数据?

如何防止 Rails 检查针对正在编辑/更新的对象的唯一约束?

单击“更新”后,检查与正在编辑的帖子对应的单选按钮,如果存在验证错误,

从Visual Studio编辑时,Chrome中的CSS实时更新

QtableView单元格失去对窗体关闭的关注时如何保存正在编辑的数据

在正在编辑的单元格上评估 ISEMPTY 时出错

我正在尝试使用 Django CMS 和模板。但在编辑模板时出错

从JTable删除正在编辑的行

正在编辑sources.list?

如何在编辑方法中停止在Codeigniter中更新密码?

在编辑配置文件中更新密码时进行预更新

Django:如何在编辑或更新后将用户返回到正确的分页页面?

用户按下按钮时如何在编辑文本上显示值?

使用jQuery,当用户仍在编辑文本字段时,如何将其大写呢?

在发送变更通知之前,我如何要求用户在编辑Trait值时按下<RETURN>?

在编辑用户时出现问题,如何存储正确编码的密码?

为什么在编辑用户离开语音通道时为什么收到DiscordAPIError?