我一直在寻找答案的方式已经有几个星期了,并且阅读了所有可以找到的相关内容(在SO,React的文档中,以及在诸如react-codemirror等相关库的源代码中),找不到我能理解的答案。我在React上有些虚弱,这可能就是我倒下的地方。
我正在开发一个使用React建在React中的项目(称为Pharaoh,一种用于教室的浏览器和桌面编辑器),该项目使用Firepad(因此使用我喜欢的Firebase和CodeMirror)。我已经使用了上述所有技术,包括使用CodeMirror编写桌面Markdown编辑器,以及使用Firebase编写了一些演示/实践应用程序。我在这里的问题几乎肯定是不完全了解React的问题之一。
我想要做的就是能够将文件保存到Firepad / CodeMirror实例之外(到桌面)。我通常知道如何使用FileReader和HTML5 Filesystem API,甚至可以使用来完成node-fs
,因为我的目标是我们的桌面应用程序(在NW.js上运行)。
CodeMirror有一些非常有用的方法,例如editorName.codeMirror.doc.getValue()
可以完美运行的方法。Firepad甚至更简单editorName.firepad.getText()
(而且.setText()
我最终还会用它来从文件系统加载文件)。我知道这些是如何工作的,并且可以看到我如何将它们返回的内容保存起来,这没问题。我的问题是我实际上无法访问这些方法。对于从第三方库或从一般组件访问方法,这可能只是一些愚蠢的事情,但是我对此感到困惑。我经常在工作中使用的工具Codeshare.io(我相信它是在React中构建的,并使用Firepad)公开了这些方法,因此,我将深入研究它们的源代码(对cURL来说是这样),看看是否可以找到任何方法答案,但是任何更快的选择都将非常有帮助。
非常感谢!
注意:我想我需要赢得更多的声望。发布前删除/更改了一堆链接。
使用这些npm packages
- ,brace
,react-ace
,。firebase
firepad
由于firepad
需要ace
全局显示,因此在导入之前将大括号分配给全局var like(不是最好的方法,但可以工作)firepad
import brace from 'brace';
global.ace = brace;
global.ace.require = global.ace.acequire;
import Firepad from 'firepad';
使用ref
得到的实例ReactAce
,并初始化它componentDidMount
使用:
new Firepad.fromACE(this.firepadRef, this.aceInstance.editor, options);
对于CodeMirror
编辑器也是如此。
希望这会有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句