【发布时间】:2021-03-27 10:56:54
【问题描述】:
我正在使用 React(初学者)开发降价预览器,并且我试图在页面上的单独 div 中显示 textarea 的当前值。我不确定如何最好地使用 React 处理 textarea 值。
我的组件层次结构如下:
- 应用程序
- 编辑器
- 工具栏
- 文本区域
- 预览器
- 工具栏
- 目标分区
- 编辑器
目前,我的 App 组件中有一个函数可以处理对 textarea 的更改 - 它作为道具传递给 Editor 组件,并进一步传递给 Textarea 组件,在 onChange 事件之后调用它:
function App() {
const handleTextChange = () => {
const textarea = document.getElementById("textarea");
let text;
if (textarea === null) {
text = "";
} else {
text = textarea.value;
}
console.log(text);
return text;
};
return (
<div className="App">
<Header />
<div className="App-body">
<Editor handleTextChange={handleTextChange} />
<Preview />
</div>
</div>
);
}
export default App;
这个功能正在工作 - 我可以在我输入时看到控制台中的 textarea 值正在更新。
问题如下:
- 我应该如何将此值传递给目标 div?这是否需要涉及 State,以便每次 textarea 值更改时目标 div 重新渲染?
- 在我的 App 组件中声明 handleTextChange 函数是正确的方法吗?有没有更好的方法来实现这个结果?
React 新手(和 Stack Overflow) - 任何建议(或相关问题的链接)表示赞赏
【问题讨论】:
-
你对初学者来说做得很好,特别是因为你挑战了你所做的假设,这是一个常见的陷阱。是的,在 App 组件中声明 handleTextChange 函数是一种反模式;现在,在提供替代方案之前,我想建议您首先成功实现这个问题的目标,并达到您对正在执行的 DOM 和状态管理感到满意的程度,只是为了降低复杂性,然后采取看看钩子。 React 中的 Hooks 允许任何两个组件(无论父子关系如何)共享数据和功能。
标签: javascript reactjs textarea