问题标签 [slatejs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
54 浏览

reactjs - 保存由多个用户编辑的富文本编辑器内容

我正在开发允许用户之间协作的编辑器(类似于 Google Docs)。我使用react+slatejs作为前端和nestjs+mongoose作为后端。要在前端和后端之间连接,我使用socketioand axios。我希望自动保存编辑器的内容。考虑到用户可以相互协作,即使有多个用户连接到编辑器,保存也应该只执行一次。在前端,我有一个包含已连接用户的数组,其中包含连接到编辑器的每个用户的套接字 ID。我创建了一个包裹在油门方法中的函数来自lodash. 在上面的函数中,我将当前用户的套接字 id 与已连接用户数组的第一个元素进行了比较。如果它们相同,我会发出一个事件。我不知道这是否是正确的方法。最好的方法是什么?

谢谢。

0 投票
0 回答
163 浏览

popup - 使用 Debut 的 slate 创建弹出式购物车

我正在尝试使用石板_hideCartPopup_showCartPopup响应 onclick 购物车的锚标签。我正在使用最新的debut主题。

试过这个,但我有错误..

Uncaught TypeError: theme.Product._showCartPopup is not a function

0 投票
1 回答
581 浏览

javascript - 创建一个 slate.js 编辑器组件,将其状态保持在 markdown 中

我想创建一个slate.js基于 -based 的编辑器组件,将其状态保持在 markdown 中。Slate.js 文档不断重复将状态序列化和反序列化到 md 应该是多么简单,但他们没有提供实际的方法来做到这一点。

remark-slate-transformer基于以下两个示例,我尝试以非常直接的方式实现这样的编辑器: remark-slate-transformerslate

沙箱在这里

但这不是很好。我希望初始文本以粗体显示,但事实并非如此。每次击键时光标都会跳回位置 0。另外,当我删除字符串(value变成'')时,编辑器会中断。

制作状态存储为降价的编辑器组件的正确、轻松的方法是什么?

0 投票
1 回答
135 浏览

javascript - 无法选择文本,无法在 Firefox 中定位插入符号 - Slatejs

描述

仅在 Firefox 中的 Slatejs 编辑器因文本选择和插入符号定位(通过鼠标)而失败。它总是选择第一个字符之前的位置(路径 [0] 偏移 [0])。您仍然可以使用键盘来选择文本和定位插入符号。

记录

火狐: 在此处输入图像描述

铬合金: https://i.imgur.com/UdH1xM7.gif

期待

它应该像在其他浏览器中一样选择文本和位置插入符号。

环境

  • 石板版本:0.63.0
  • 操作系统:Windows 10
  • 浏览器:Firefox 90.0.1(64 位)

编辑器实现供参考

任何想法可能是什么原因造成的?

0 投票
1 回答
462 浏览

javascript - 无法使用官方示例在 Slate.js 编辑器中清楚地删除链接

在此处输入图像描述

代码沙盒示例:

https://codesandbox.io/s/slate-2-images-and-links-forked-s09wi

这基本上是官方文档中的withLink() 示例

当您按退格键或剪切键删除链接时,JSON 输出仍包含带有空文本的链接数据。我不明白为什么它仍然保留在输出中。任何人都可以为此提供解决方案吗?

withLink 示例:

0 投票
0 回答
47 浏览

javascript - Slate.js - 大括号不起作用

尝试修改提及示例以使用两个大括号 ( {{) 而不是@用于触发弹出窗口的符号。最终希望选定的文本呈现为:

{{R2-D2}}而不是@R2-D2.

问题似乎beforeText是自从换行以来没有得到完整的单词。对于每个输入的文本,它都会跳转并删除前括号,因此 beforeMatch (now beforeText.match(/^(\{{2})(\w+)$/))中替换的正则表达式无法解析。

对于: like { beforeText 是: like {

对于: like {{ beforeText 是: like {{

对于: like {{R beforeText 是: {R

输入第一个字母时,如何让 beforeText 不跳转到删除第一个括号?已尝试向 .before() 选项添加距离选项,但结果相同。

0 投票
1 回答
325 浏览

javascript - 如何清除 Slatejs v0.50+ 中的编辑器?

我不知道如何在 Slate v0.50+ 的编辑器中删除所有内容。

我曾经能够做这样的事情:

我现在该怎么做?

0 投票
1 回答
143 浏览

javascript - 如果特定单词出现在编辑器中,则更改它们的颜色

我有一个石板文本编辑器。我有一个单独的组件,它是由一组预定义单词映射的 div。该部分是要使用的关键字。如果它们存在于编辑器中,我希望能够更改关键字中单词的颜色以使用不同的颜色。

我考虑这个的方式是我可以将我将要在编辑器中写的单词存储在一个状态,如果有新的东西写出来,它会不断更新。而且我已经有了一系列单词。我必须以某种方式找到在这两个数组之间进行通信的方法。

我该如何处理?

代码沙箱

0 投票
1 回答
180 浏览

reactjs - 如何在 slate js 中为特定关键字着色

试图让单词“hello”以不同的颜色出现,使用示例中的示例几乎 1:1,但无法使其正常工作。

每当我输入“你好”时,文本开始出现两次。

我的代码:

0 投票
0 回答
78 浏览

reactjs - 粘贴html时Slate js路径为空错误

我已将我的 slate 版本升级到 0.66.5 并将 slate-react 升级到 0.68.0,但现在我遇到了以下问题:

在此处输入图像描述

当我从第三方来源粘贴 html 内容时,会出现此问题。

代码片段如下: