reactで親コンポーネントのstateを子のコンポーネントから変更しようとしていますが、それができません。
コード
実現したいこととしては、子のコンポーネントから親コンポーネントのstateを更新したい
と言うことなのですが、具体的なコードは以下の通りです。
※少し省略してます
Parent.tsx
1const Parent: React.FC = () => { 2 const [currentId, setCurrentId] = useState(data.length - 1) 3 4 const handleSwipe = () => { 5 setCurrentId(currentId - 1) 6 } 7 8 return( 9 <> 10 <Child handleSwipe={handleSwipe}> 11 </> 12 ) 13}
Child.tsx
1const Child: React.FC<Props> = (props) => { 2 return( 3 <> 4 <div onSwipe={() => props.handleSwipe()}> 5 <div> 6 <img src={user.img} alt="" /> 7 <div className="person-info"> 8 <strong>{user.name}</strong>, {user.age} 9 </div> 10 </div> 11 </div> 12 </> 13 ) 14}
ParentのcurrentId
というstateをChildコンポーネントがスワイプされたら、handleSwipe
関数を実行して、setCurrentId(currentId - 1)
をしたいのですが、うまく更新できません。スワイプのたびにconsole.log(currentId)
でコンソールにcurrentIdを表示することはできているので、スワイプ自体は検知され、handleSwipe
も実行されているように見えるのですが、表示されているcurrentId
自体はずっと同じものが表示されています。
これにはどのような原因があるのでしょうか?また、どのようにしたらstateを更新できますか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/23 06:07