React Nativeを利用してアプリ開発をしています。
functionコンポーネントでhooksを利用して、stateの管理をしています。
下記のコードで、下のような動作(addボタンを押す)をした際に、期待するコンソール表示は[A]なのですが、実際は[B]の表示となります。
動作の方法
①:起動させ画面が表示される
②:[追加]ボタンを押す
A:期待するコンソール表示
--initial-- 0 --add-- 1 --initial-- 1
B:実際のコンソール表示
--initial-- 0 --add-- 0 --initial-- 1
追加ボタンを押した際のfunctionで、state(counter)が1つ増える処理をした後に、コンソール表示をさせているのに、なぜstate(counter)の初期値での表示となるのでしょうか?
また、追加ボタンを押した時に、state(counter)が1つ増えるようにするには、どのようなコードにすればよいのでしょうか?
ご存知の方おりましたら、ご教授いただけないでしょうか?
コードは以下のとおりです。
JS
1import React, { useState } from "react"; 2import { View, Button } from "react-native"; 3 4export default function TestStateArray() { 5 const [counter, setCounter] = useState(0); 6 7 function handleAdd() { 8 setCounter((v) => v + 1); 9 console.log("--add--"); 10 console.log(counter); 11 } 12 13 console.log("--initial--"); 14 console.log(counter); 15 16 return ( 17 <View> 18 <Button 19 title="追加" 20 onPress={() => { 21 handleAdd(); 22 }} 23 /> 24 </View> 25 ); 26}
node : 12.18.3
react native : 4.10.1
expo : 3.22.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/09 01:37 編集
2020/08/09 01:38
2020/08/09 01:50 編集