更新 Flux 商店内的插入符号位置

Updating caret position within Flux store

我有一个环绕表单输入的组件。出于协作编辑的目的,我不仅需要监视文本的变化,还需要监视插入符号的位置。部分插入符号的位置将由 selectionchange 事件决定,它也可以通过一些键盘快捷键更改。

现在我正在考虑如何将其融入 Flux 架构。我的意思是,当这个位置发生变化时,我应该发送一个相应地更新商店的动作,对吗?然后重新渲染发生,组件包装输入读取有关插入符号位置的信息并在 DOM.

中更新它

理论上这应该很好地解决问题,但想象一下,每次用户键入字母时我都会更新插入符号的位置。对于快速打字的人来说,它可能会导致问题,因为插入符号会跳回到不应该的地方。

我只能在用户停止输入特定时间后实施一些去抖和调度操作,但这不是一个可靠的解决方案。

所以我想知道如何以成熟的方式完成这件事。我唯一想到的是标记已派发的操作,如果它是由打字或键盘快捷键引起的,而只是忽略以前的操作。这是 "correct" 方法还是您会推荐其他方法?

In theory this should work out nicely, but imagine that I would be updating caret position every time the user types a letter. For a fast-typers it could cause issues as the caret would be jumping back where it shouldn't.

不会有这样的问题。分派一个动作与在每个正常工作的按键上更新 React 组件状态没有什么不同。因为调度是同步的,所以状态总是最新的,插入符号不会跳转。