#reactjs #typescript #ionic2
Вопрос:
Я не уверен, почему это приводит меня к ошибке, я знаю, что должен что-то сделать, но я не могу понять, что сказать, чтобы это не приводило меня к ошибке. Если я запущу его, он выдаст мне ошибку, но на самом деле он все еще работает, поэтому значение регистрируется в консоли.
const Tab1: React.FC = () => {
const [lockdownData, setLockdownData] = useState();
useEffect(() => {
let finalLockdownData: any;
var getLockdownData = async () => {
await firestoreDB.collection("LockdownStatus").doc("lockdownData").get().then((doc) => {
finalLockdownData = doc.data();
});
setLockdownData(finalLockdownData);
};
getLockdownData();
}, []);
console.log('Position 1')
console.log(lockdownData?.level) //ERROR: Property 'level' does not exist on type 'never[]'.ts(2339)
console.log('Position 2')
return (
Ответ №1:
Просто напишите это так
const [lockdownData, setLockdownData] = useState<any[]>([])
Правка 1
if (lockdownData === null) {
console.log('data is nullable');
} else {
console.log(lockdownData!.level);
}
Изменить 2
const [lockdownData, setLockdownData] = useState<Record<string, never>>({});
Codesandbox: https://codesandbox.io/s/dreamy-water-v0vwb?file=/src/App.tsx:108-184
Комментарии:
1. Это не сработало, однако, [] не должно быть там в любом случае, извините за это
2. По-прежнему выдает ту же ошибку
Property 'level' does not exist on type 'any[]'
3. И если я сделаю его пустым в useState (), там будет написано
Property 'level' does not exist on type 'never'
4. почему вы хотите установить начальное состояние пустым? вы используете машинописный текст
5. Я не хочу оставлять его пустым, но я жду получения данных из базы данных firestore, а затем, как только данные будут извлечены, я смогу ими манипулировать