現在reactとtypescriptでタイピングアプリを開発中です
ですが、if (e.key === word[location]) の部分でのエラーが解決出来ずに困ってます。
const Typing: React.FunctionComponent<{ list: any }> = ({list}) => { const [word, setWord] = useState("") let location:number = 0 const words = list.map((data: any) => (data.text)) useEffect(() => { setWord(words[Math.floor(Math.random() * words.length)]) }, []) console.log(word) document.addEventListener('keydown', e => { if (e.key === word[location]) { location++; setWord('_'.repeat(location) + word.substring(location)) if (location === word.length) { location = 0 setWord(words[Math.floor(Math.random() * words.length)]) } } }); return ( <> <div id="typing"> <p className="target">{word}</p> </div> </> ); } export default Typing;
エラー文は、
TypeError: Cannot read property '0' of undefined
と出力されています。
word[location]がいけないのかと思い
word.charAt(location)なども試してみたのですが同じエラーになってしまいます。
listは配列で中にオブジェクトが入ってます
listをmap関数で回して、list.textだけのwordsという配列を作っています
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/23 05:07
2021/05/24 00:18