У меня есть компонент диаграммы, в котором можно показать / скрыть определенные линии.Чтобы отслеживать, какие строки активны, я сохраняю массив activeKeys
в состоянии.Изначально я получаю имена ключей из функции getKeys
, которая принимает массив данных.
Когда я делаю это:
const defaultValue = getKeys(data)
console.log('defaultValue from keys', defaultValue)
const [activeKeys, setActiveKeys] = useState(defaultValue)
console.log('activeKeys', activeKeys)
Первый журнал консоли показывает правильные ключи:
["createdCount", "confirmedCount", "hasFeedbackCount"]
Второй журнал консоли показывает []
Но , если я сделаю:
const defaultValue = ["createdCount", "confirmedCount","hasFeedbackCount"]
console.log('defaultValue', defaultValue)
const [activeKeys, setActiveKeys] = useState(defaultValue)
console.log('activeKeys', activeKeys)
Первый консольный журнал показывает тот же массив:
["createdCount", "confirmedCount", "hasFeedbackCount"]
И activeKeys
показывает правильныймассив:
["createdCount", "confirmedCount", "hasFeedbackCount"]
useState
сломан или что-то?По getKeys
это простая функция, без обещаний или чего-то в этом роде.Это выглядит так:
const getKeys = (data: Props['data']): string[] => {
const reduced = data.reduce((acc, datum) => [...acc, ...Object.keys(datum.lines)] as any, [])
const setted = new Set(reduced)
const arrayed = Array.from(setted)
return arrayed
}
Форма Props['data']
имеет вид:
data: {
date: string
lines: Partial<Record<string, number>>
}[]