我在我的 React 应用程序中使用 ace Editor 并收到上述错误。我想将我在我的 React 应用程序中使用的 Ace Editor IDE 的内容放在通过提交按钮触发的函数调用中。<AceEditorref='aceEditor'height='100%'width='100%'mode={ideLanguage}theme={ideTheme}fontSize={ideFontSize}showGutter={true}showPrintMargin={false}/>这是按钮<Buttontype='button'buttonStyle='btn--primary--normal'buttonSize='btn--medium'onClick={SendCode}>SUBMIT</Button>这是功能const SendCode = () => { console.log(this.refs.aceEditor.editor.getValue());};我究竟做错了什么??
1 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
字符串引用是设置 DOM 引用的传统方式。
在最新的 React 版本中,建议对功能组件和类组件使用React.useRef()
钩子。React.createRef()
您可以阅读更多详细信息 - https://reactjs.org/docs/refs-and-the-dom.html#legacy-api-string-refs
我猜,你可能已经打开了<React.StrictMode>
高阶组件的严格模式。这就是为什么会抛出错误/警告的原因。
你应该做什么 -
声明一个 ref 变量。
const aceEditorRef = useRef();
之后,替换
ref='aceEditor'
为ref={aceEditorRef}
。
<AceEditor
ref={aceEditorRef}
height='100%'
width='100%'
mode={ideLanguage}
theme={ideTheme}
fontSize={ideFontSize}
showGutter={true}
showPrintMargin={false}/>
使用 aceEditorRef.current 获取 DOM 引用
const SendCode = () => {
console.log(this.aceEditorRef.current.editor.getValue());
};
添加回答
举报
0/150
提交
取消