Отправить данные из массива в API и показать ответ на следующем экране React Native - PullRequest
1 голос
/ 18 февраля 2020

Я хочу отправить свои данные из текстовых входов из массива, причина, по которой я выбираю массив, заключается в том, что API, который я вызываю, в основном массив, все, что я хочу сделать, это установить эти значения из textinput в api и показать ответ на следующий экран. Вот мой экран Один, который принимает эти значения и отправляет его в API, но проблема в том, что он не отправляет значение и не показывает мне ответ на следующем экране:

 constructor(props){
        super(props);
        this.state={
            ze:[userid="",
            ID="",
            titlex="",
            switchValue=false,]
        }   
    }
 handleSubmit(){  
     fetch("https://jsonplaceholder.typicode.com/todos/1", {
        method: "POST",
       // headers: headers,
        body:  JSON.stringify({
          userId:this.state.ze.userid,
          id:this.state.ze.ID,
          title:this.state.ze.titlex,
          completed:this.state.ze.switchValue,
        })
     })
     .then(function(response){ 
      return response.json();   

     })
     .then(function(z){ 
     console.log(z)
     });
     this.props.navigation.navigate('Pg',{value:this.state.ze});
    }

Это мой следующий экран, на котором он будет отображаться Мне ответ, это то, что я сделал до сих пор, и я не знаю, как показать ответ из массива на следующий экран:

 componentDidMount = () => {
      const item = JSON.stringify(this.props.navigation.getParam('value'));
       Alert.alert(item.id);
     }
     render() {
        return (
           <View>
              <Text>
               {/* Name:{this.state.} */}
              </Text>
           </View>
        )
     }

Ответы [ 2 ]

0 голосов
/ 18 февраля 2020

Вы отправляете это правильно, но не правильно читаете.

Вместо этого:

const item = JSON.stringify(this.props.navigation.getParam('value'));

Просто сделайте это:

const item = this.props.navigation.getParam('value');

Теперь, чтобы быстро отобразить это, вы можете использовать что-то вроде этого в вашем JSX:

<Text>{JSON.stringify(item)}</Text>

Для чего-то более удобного для пользователя, каждый элемент в отдельной строке, вы можете попробовать что-то подобное в своем JSX:

{!!item.length && item.map(i => <Text>i</Text>)}

Конечно, это зависит от того, какой тип элементов содержится в вашем массиве. Просто настройте код выше.

0 голосов
/ 18 февраля 2020

Вы используете

this.state={
            ze:[userid="",
            ID="",
            titlex="",
            switchValue=false,]
        } 

, который имеет форму массива, поэтому вы должны получить к нему доступ как

item[index].id

или использовать

array.map((item, index){
return (
  item.ID
)
})
...