【发布时间】:2020-03-09 19:13:08
【问题描述】:
所以我有 2 个问题。我创建了一个 textarea 组件,该组件还将跟踪用户在 textarea 中输入了多少字符。
问题 1:
我正在尝试查看用户输入的当前输入长度是否大于或等于(>=)我的maxLength prop if (value.length >= maxLength),但我收到此错误:
var maxLength: number | undefined
Object is possibly 'undefined'.ts(2532)
谁能解释我为什么会得到这个?
问题 2:
目前,当您在 textarea 中键入单个字符时,字符限制将保持在 0,并且仅在键入第二个字符后才会开始增加。此外,如果您在 textatea 中键入一些文本然后删除它,它会说字符限制是 1/X,而它应该是 0/X。我该如何解决这个问题?
代码:
import * as React from "react";
import "./styles.css";
interface ITextarea {
maxLength?: number;
}
const Textarea: React.FC<ITextarea> = ({ maxLength }) => {
const [value, setValue] = React.useState("");
const [charLimit, setCharLimit] = React.useState(`0 / ${maxLength}`);
const handleCharLimit = () => {
if (value.length >= maxLength) {
setCharLimit("You have reached the maximum number of characters!");
} else {
setCharLimit(`${value.length} / ${maxLength}`);
}
};
return (
<>
<textarea
value={value}
onChange={event => {
setValue(event.target.value);
handleCharLimit();
}}
maxLength={maxLength}
/>
{maxLength && <span>{charLimit}</span>}
</>
);
};
export default function App() {
return (
<div className="App">
<Textarea maxLength={50} />
</div>
);
}
这是一个CodeSandBox,感谢分叉 :)
【问题讨论】:
标签: javascript reactjs typescript