#javascript #react-native #react-native-ios
#javascript #react-native #react-native-ios
Вопрос:
Сегодня я столкнулся со странной ошибкой. Я использую компонент, вызываемый при первой загрузке в App.js , где это работает нормально. Я регистрирую props, все в порядке: объект. Затем, перейдя к следующему компоненту, LogInScreen.js используя навигацию React, там реквизит не определен. Итак, если вызывается из App.js , это работает, props — это объект, и вызывается из LogInScreen.js он выходит из строя (реквизит не определен). Если я попытаюсь его разрушить или вызвать элемент props.isNotFullScreen
, он вылетает с ошибкой TypeError: Cannot read property 'isNotFullScreen' of undefined
Единственным решением, которое я нашел, было написать const isNotFullScreen = props ? props.isNotFullScreen : false;
, но все же мне интересно, есть ли у кого-нибудь из вас представление о том, что происходит.
Я использую тестирование React Native 0.63.3 с помощью iOS simulator
Вот мой компонент Spinner
import React from "react";
import { View, ActivityIndicator } from "react-native";
import styles from "./styles/SpinnerStyle";
import { Colors } from "../themes";
const Spinner = (props) => {
console.log("Spinner props:", props);
const { isNotFullScreen } = props;
console.log("isNotFullScreen:", isNotFullScreen);
return (
<View style={[styles.spinner, !isNotFullScreen amp;amp; styles.fullScreen]}>
<ActivityIndicator
animating={true}
size="large"
color={Colors.baseBlue}
style={{
flex: 1,
justifyContent: "center",
}}
/>
</View>
);
};
export default Spinner;
Комментарии:
1. Я не понял, как вы передаете свои реквизиты
Spinner
компоненту. Можете ли вы объяснить более подробно? Единственная опора, которую я вижу, которую вы передаете, — этоisInApp
.2. Это правильно, я иногда передаю props, например ` isInApp`, который был только для целей тестирования или наиболее корректно
isNotFullScreen
, а иногда я этого не делаю. Однако оно не должно быть неопределенным, даже если я ничего не передаю, это должен быть пустой объект, верно?3. Попробуйте поместить код, который вы получаете
isNotFullScreen
prop, вuseEffect
хук. НравитсяuseEffect(()=>{ console.log("Spinner props:", props); const { isNotFullScreen } = props; console.log("isNotFullScreen:", isNotFullScreen) }, [])
. Что это заставит его работать.