@alexsteadfast
I am noob

Почему не сохраняются состояния в Реакте?

Получаю по АПИ массив, сохраняю его в состояниях и пытаюсь отрендерить на форму, ошибок нет, но на экране пусто, когда обращаюсь просто к массиву он мне явно указывает все ключи, при обращении по ключам, выводит пустоту.
import React, {Component} from 'react';
import { StyleSheet, Text, View, Image, Button } from 'react-native';

const myObj = {
  name: '',
  age: '',
  favoriteFood: ''
};

const myObjStr = JSON.stringify(myObj);

export default class App extends React.Component {
  state = {
      data: ''
   }
   componentDidMount = () => {
        fetch('https://delovoe-tv.ru/wp-json/wp/v2/posts/', {
         method: 'GET'
      })
      .then((response) => response.json())
      .then((responseJson) => {
         
         global.SampleVar = JSON.stringify(responseJson);
         global.Var = JSON.parse(SampleVar);
         Var.forEach(function(item, i, arr) {
              var arr = new Array();
              arr.push(i,item['title']['rendered']);
              //alert( i + ": " + item['title']['rendered'] + " (массив:" + arr + ")" );
            
              global.arr;
            });

         this.setState({
            data: responseJson
         })
      })
      .catch((error) => {
         console.error(error);
      });
   }

   render() {
    const handlePress = () => false
    return (
      <View style={styles.container}>
         <Image
          style={{width: 300, height: 100,paddingTop:0,marginTop:0}}
          source={{uri: 'http://delovoe-tv.ru/wp-content/uploads/2018/07/DTV_Logo.png'}}
        />
        <Text style={{width: 250, paddingTop:30}}>
        {this.state.data['title']}
        </Text>        
      </View>
    );
  }
}
const styles = StyleSheet.create({
  container: {
    top:50,
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'flex-start',
  },
});
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
@real2210
Вы в состояние записываете responseJson.
В нем хранится JSON который Вам пришел.

Почему бы не отрендерить например так:
{this.state.data.map((item) =>
  <Text key={item.id} style={{width: 250, paddingTop:30}}>
       {item.title.rendered}
   </Text>     
)}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы