#react-native
Вопрос:
Я новичок в разработке мобильных устройств React Native. [Ошибка ссылки: Не удается найти переменную: данные] ошибка произошла в следующем коде. Я не знаю, что не так с переменной «данные». Не мог бы кто-нибудь, пожалуйста, помочь.
export default class PopularComponent extends Component { constructor(props) { super(props); this.state = { data: [], isLoading: true }; } async getPopularMovies() { try { const response = await fetch(Global.popularPath); const json = await response.json(); this.setState({ data: json.results }); } catch (error) { this.setState({ isLoading: false }) console.log(error); } finally { this.setState({ isLoading: false }); } } componentDidMount() { this.getPopularMovies(); } render() { const { data, isLoading } = this.state; return ( lt;View style={{ flex: 1, flexDirection: 'column' }}gt; {isLoading ? lt;ActivityIndicator/gt; : ( lt;FlatList data={data} keyExtractor={({ id }, index) =gt; id} renderItem={({ item }) =gt; ( lt;Image source={{uri : Global.imageBaseUrl item.poster_path}} /gt; )} /gt; )} lt;/Viewgt; ); } };
Комментарии:
1. Это проблема с вызовом переменной «данные» в render() **. Вызывая, например, **data={this.state.data} , все будет в порядке.
2. Полный код в ответе.
Ответ №1:
Эта проблема решается таким образом.
В режиме рендеринга(),
- Удалить const { данные, загрузка } = this.state;
- Вызовите напрямую data={this.state.data} и this.state.isLoading
render() { return ( lt;View style={{ flex: 1, flexDirection: 'column' }}gt; {this.state.isLoading ? lt;ActivityIndicator/gt; : ( lt;FlatList data={this.state.data} keyExtractor={({ id }, index) =gt; id} renderItem={({ item }) =gt; ( lt;Image source={{uri : Global.imageBaseUrl item.poster_path}} /gt; )} /gt; )} lt;/Viewgt; ); } };