Context
我的用例要求用户可以填充长文本中的空白。就像你在语言学习教科书中看到的那样,你需要用正确时态的动词来填补差距。因此,只有间隙应该是可编辑的。其他一切都应该保持不变。
当然,最直接的方法是将每个间隙表示为单独的输入,并将常量文本表示为常规HTML元素,从而无需使用花哨的编辑器库。当输入需要跨越多行时,这不够好。如果我开始使用多行文本区域,要么用户看不到整个文本,要么文本对齐方式看起来很糟糕。
我最初是用DraftJs实现的,但在用Android测试这个解决方案时遇到了问题。这就是为什么我现在尝试使用Lexical,因为它应该具有良好的跨平台支持。
解决方案是什么
我是一个全新的词汇,因此我不知道如何去做这件事。
如果有一种方法可以拦截编辑器的每个新状态,并能够访问内容,以及取消新状态的资格(这意味着编辑器不应该呈现它并恢复到以前的状态),那么这就足够了。在这种情况下,我可以检查内容是否仍然有所有不可编辑的部分,如果是,那么让更改通过,如果不阻止它,但我没有在文档中找到任何类似的东西。
也许还有其他方法可以达到同样的目的。
1条答案
按热度按时间brccelvz1#
解决这个问题的一个方法是创建一个 decorator node。默认情况下,它们是不可编辑的,并使用React来渲染它们的外观。
另一种选择是通过创建custom node并实现
updateDOM
函数来覆盖文本节点,这样它就不会修改任何内容。