Javascript 在React组件中公开第三方库(Firepad)方法

Javascript 在React组件中公开第三方库(Firepad)方法,javascript,reactjs,codemirror,refs,firepad,Javascript,Reactjs,Codemirror,Refs,Firepad,我已经寻找这个问题的答案好几个星期了,我已经通读了所有我能找到的相关内容(在React的文档中,在React codemirror等相关库的源代码中),但找不到我能理解的答案。我的反应有点弱,这可能就是我摔倒的地方 我正在做一个内置React的项目(称为Phalan,一个为教室设计的浏览器和桌面编辑器),它使用Firepad(因此,使用Firebase和CodeMirror,我很喜欢)。我已经使用了上面的所有技术,包括使用CodeMirror编写桌面标记编辑器,以及使用Firebase编写一些演

我已经寻找这个问题的答案好几个星期了,我已经通读了所有我能找到的相关内容(在React的文档中,在React codemirror等相关库的源代码中),但找不到我能理解的答案。我的反应有点弱,这可能就是我摔倒的地方

我正在做一个内置React的项目(称为Phalan,一个为教室设计的浏览器和桌面编辑器),它使用Firepad(因此,使用Firebase和CodeMirror,我很喜欢)。我已经使用了上面的所有技术,包括使用CodeMirror编写桌面标记编辑器,以及使用Firebase编写一些演示/实践应用程序。我在这里的问题几乎肯定是一个就是不理解和反应那么好

我想做的是从Firepad/CodeMirror实例中保存文件(到桌面)。我一般都知道,这甚至可以通过
节点fs
来实现,因为我这里的目标是我们的桌面应用程序(在NW.js上运行)

CodeMirror有一些非常有用的方法,比如
editorName.CodeMirror.doc.getValue()
,这些方法可以很好地工作;Firepad有更简单的
editorName.Firepad.getText()
(和
.setText()
,我最后也会使用它从文件系统加载文件)。我知道它们是如何工作的,并且可以看到我将如何获取它们返回的内容并将其保存下来,这没有问题。我的问题是我实际上无法访问这些方法。关于从第三方库或组件中访问方法,这可能是我应该知道的一些愚蠢的事情,但我有点被难住了。我在工作中经常使用的一个工具Codeshare.io,我相信它是内置在React中并使用Firepad的,它公开了这些方法,所以我将深入研究它们的来源(对cURL来说是的),看看我是否能找到任何答案,但任何更快的方法都会非常有用

非常感谢


注:我想我需要赢得更多的声誉;发布前删除/更改了一系列链接。

使用这些
npm包
-
brace
react ace
firebase
firead

由于
firepad
需要
ace
全局显示,因此将大括号指定给全局变量 导入
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);
类似地,对于
codemirr
编辑器


希望这能有所帮助。

这些函数是否在浏览器中的开发人员控制台中返回未定义的函数?恐怕不会——事实上,不管我如何查找它们,它们根本无法访问。我应该提到,React-devtools扩展确实允许我访问Firepad,所以类似于
$r.Firepad.setText('foo')的东西
$r.firepad.getText()
工作得非常好——但只有在选择了该组件的devtools扩展中才能工作。在React中的回调中使用setText时遇到问题。这是同一个问题吗?