[ReactNative]useEffect内でfor文のループが行われない
Q&A
Closed
解決したいこと
服薬習慣化アプリを作っています。
useEffect内でfor文を使っているのですが、ループが行われません。
発生している問題
const [meds, setMeds] = useState([]);
const [days, setDays] = useState(0);
medsには別のuseEffectから代入した下記の配列が入っています。
Array [
2022-04-18T00:00:00.000Z,
2022-04-17T00:00:00.000Z,
2022-04-16T00:00:00.000Z,
2022-04-15T00:00:00.000Z,
2022-04-14T00:00:00.000Z,
2022-04-13T00:00:00.000Z,
2022-04-12T00:00:00.000Z,
2022-04-11T00:00:00.000Z,
2022-04-10T00:00:00.000Z,
2022-04-08T00:00:00.000Z,
2022-04-07T00:00:00.000Z,
2022-04-06T00:00:00.000Z,
2022-04-05T00:00:00.000Z,
2022-04-04T00:00:00.000Z,
]
import { subDays } from "date-fns";
useEffect(() => {
for (let i = 0; i < meds.length; i++) {
if (meds[i + 1] === subDays(meds[i], 1)) {
setDays(days + 1);
} else {
break;
}
}
}, [])
連続した日数だけdaysに加算したいのですが、if文を消しても、1しか表示されません。
また、
console.log(subDays(meds[0],1));
console.log(meds[1]);
2022-04-17T00:00:00.000Z
2022-04-17T00:00:00.000Z
となるのですが、上記の条件式ではsetDays(days + 1);
がうまくいかず、0となります。
return (
<Text style={styles.text}>{days}</Text>
)
ReactNativeの知識が浅く、解決できません。ヒントでも良いのでいただけたら幸いです。