[英]React Hook useState setter for prop fails
I initialise missingWeekDays
as an empty array []
.我将
missingWeekDays
初始化为一个空数组[]
。 I create an array of strings weekdays
and assign to missingWeekDays
.我创建了一个字符串数组
weekdays
并分配给missingWeekDays
。 But when I console out weekdays
has content but missingWeekDays
is still empty.但是当我安慰
weekdays
有内容但missingWeekDays
仍然是空的。 Why is that?这是为什么?
Some suggested that setMissingWeekDays
should have a callback like old setState
.有人建议
setMissingWeekDays
应该有一个像旧的setState
一样的回调。 But I can't find any documentation on this callback... A link would be appreciated!但是我找不到有关此回调的任何文档...链接将不胜感激!
import React, { FC, useEffect, useState } from 'react'
const Component: FC = () => {
const initialStart = moment()
.year(2018)
.week(5)
.startOf('isoWeek')
const [missingWeekDays, setMissingWeekDays] = useState<string[]>([])
const [startDate, setStartDate] = useState(initialStart)
useEffect(() => {
const weekdays = createWeekdaysList(startDate.toDate())
setMissingWeekDays(weekdays)
console.log(missingWeekDays, weekdays)
}, [startDate])
return <CigarettesDetails onTimeChange={handleTimeChange} data={data} />
}
export default CigarettesDetailsContainer
const createWeekdaysList = (startDate: Date): string[] => {
const weekdaysList: string[] = []
let weekDay = 0
while (weekDay < 7) {
const date: string = moment(startDate)
.clone()
.add(weekDay, 'day')
.format('YYYY-MM-DD')
weekdaysList.push(date)
weekDay += 1
}
return weekdaysList
}
Your setter from useState gets handled asynchronously.来自 useState 的设置器被异步处理。 This results in your console log not having the updated data.
这会导致您的控制台日志没有更新的数据。 This thread adds more color for you:
该线程为您添加了更多颜色:
useState set method not reflecting change immediately useState 设置方法不会立即反映更改
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.