質問をする上での前提
Reactで実装しています。
textarea
に入力されたら入力内容にstateを更新するということをしています。
発生している問題
console.log
でstateの値を出力すると、前回の(一つ前に操作したものが出力される)
例 1→2→3→4→5
という順番でtextarea
に入力していく。
出力結果 []→1→12→123→1234→12345
望む出力結果 1→12→123→1234→12345
補足
有識者の方はご存知かと思いますが、useState
の初期値を配列にしているからこの問題が発生しているわけではなさそうです。
調べていたところ、stateの更新は非同期で行われるためリアルタイムで更新されるわけではないとのことでしたが、同じような実装している方は同様の問題に直面している様子がなく質問させていただきます。
該当のソースコード
import React, {useState} from 'react' import { Input } from './components/input'; const App = () => { const [textareaA, setTextAreaA] = useState([]); const onChangeTextArea = (e) => setTextAreaA([e.target.value]) return ( <Input text="textarea" onChange={() => onChangeTextArea} /> ); } export default App; =============================================================================== Input.jsx export const Input = (props) => { const { text, onChange } = props return ( <> <label>{text}</label> <textarea cols="50" rows="20" onChange={onChange()} /> </> ) }
初歩的なことで恐れ入ります。
有識者の方いらっしゃいましたら、ご教授いただけないでしょうか?
よろしくお願いいたします。