簡體   English   中英

React Hook useState setter for prop 失敗

[英]React Hook useState setter for prop fails

我將missingWeekDays初始化為一個空數組[] 我創建了一個字符串數組weekdays並分配給missingWeekDays 但是當我安慰weekdays有內容但missingWeekDays仍然是空的。 這是為什么?

有人建議setMissingWeekDays應該有一個像舊的setState一樣的回調。 但是我找不到有關此回調的任何文檔...鏈接將不勝感激!

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
}

來自 useState 的設置器被異步處理。 這會導致您的控制台日志沒有更新的數據。 該線程為您添加了更多顏色:

useState 設置方法不會立即反映更改

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM