javascript - 组件安装时如何从文本区域获取字符数
问题描述
我正在尝试做出反应,在应用程序中有 2 页。Home
和Details
页面。当从一个页面导航Home
到Details
一个字符计数部分时,它会显示 . 中的字符数textarea
。组件是functional
。
// textarea reference
const textareaEl = useRef(null);
// character count
const [count, setCount] = useState(0);
useEffect(() => {
// some init functions.
const length = textareaEl.current.value.length;
setCount(length);
}, []);
这里length
const 变量记录 textarea 中字符的长度,但没有设置count
使用setCount()
.
但在其他事件中,在事件count
中设置keyUp
// Handle keyup
const handle_key_up = (e) => {
// console.log(e.target.value.length);
setCount(previousState => {
previousState = parseInt(e.target.value.length);
return previousState;
});
}
textarea
html是
<textarea ref={textareaEl} onKeyUp={handle_key_up} name="content" value={book.content} onChange={handleChange}></textarea>
是useEffect
设置count
变量的地方。
更新
我错的地方是;钩子里面有一个init
函数。useEffect
这是一个异步函数。它就是用文字填充文本区域的东西。所以我在 promise resolve 部分调用了字符数设置部分。
解决方案
useEffect(() => {
// some init functions.
const length = textareaEl.current.value.length;
setCount(length);
}, [count]);
useEffect 挂钩中的第二个参数指定何时调用挂钩。在这种情况下,由于要统计字符数,因此可以指定计数状态。
推荐阅读
- javascript - 自动滚动到页面底部不起作用 [javascript]
- java - 为什么这个命令不起作用?对值进行排序
- python - 从本地项目目录中的任何位置导入
- python - 在多个标签上调节 StyleGAN2
- data-modeling - 如何在没有强关系键(外键)的情况下在数据库中创建 LINK?
- python - 如果找到则循环并打印结果,否则再次循环:如何在 Python 中摆脱多重嵌套 if
- c++ - 如果输入负数,使该程序显示错误消息,并提示输入新的正数?
- python - 并行化预测输入函数
- unity3d - 当光源在侧面时,为什么我的统一对象的底部比顶部更暗?
- python - 如何根据 Python Pandas 中的一些假设将列中的 6 个第一个值转换为日期?