#javascript #reactjs #typescript #use-state
Вопрос:
Существует очень большое состояние, которое я получаю из json, состоящее по крайней мере из 50 строк.
При создании страницы она выдает ошибку «такого значения нет», если вы изначально не задали значение и не назначили интерфейс
const [dataPosibleValue, setDataPosibleValue]:[IStatPokemon,Dispatch<SetStateAction<IStatPokemon>>] = useState('')
Можно ли не устанавливать значение в начале, чтобы во время генерации не возникало ошибок?
Комментарии:
1. «не устанавливать значение» означает установку значения на
undefined
, что приведет к той же ошибке. Я не специалист по машинописи, но я думаю, что вам нужно сделать, это установить типdataPosibleValue
наIStatPokemon|undefined
.2. Кстати, обратите внимание, что вы также можете ввести его по
const [dataPosibleValue, setDataPosibleValue] = useState<IStatPokemon>()
. Это немного более лаконично, и тогда нет необходимости вводить сеттер явно.3. Может
useState<IStatPokemon | null>(null);
быть, стоит сделать трюк?
Ответ №1:
Вы можете установить его только в том случае, если он у вас есть. Если он у вас есть, вы можете установить его, передав в функцию следующим образом:
const [dataPosibleValue, setDataPosibleValue]:[IStatPokemon,Dispatch<SetStateAction>]
= useState('your initial long value')
Комментарии:
1. о боже, иначе никак нельзя?
2. Вероятно, вы получаете доступ к пустому значению, поэтому добавьте условие if, чтобы проверить, есть ли у вас значение, или изначально установите значение.