将本地传递route.params响应以获取请求

问题描述 投票:0回答:3

我使用this.props.navigation.navigate('Details',{activity: item})将项目传递到新页面。我想通过使用此活动提出获取请求。我不知道如何将项目传递给API请求。有人可以回答我吗?

register = async () =>{
        var token = await AsyncStorage.getItem('id_token')
        console.log(token)
        fetch('http://192.168.0.125:8887/api/auth/activities/register',{
            method: 'POST',
            headers:{
                'Accept': 'application/json',
                'Content-Type': 'application/json',
                'Authorization': 'Bearer ' +token,
            },
            body: JSON.stringify({

            })

        })
    }
render(){
   const { activity } = this.props.route.params;
    return (  

       <View style={styles.container}>
          <ScrollView style={styles.content}>
             <Text style={styles.data}>Title:</Text>
             <Text style={styles.info}>{activity.name}</Text>
          </ScrollView>
             <Button title="register" onPress={this.register}></Button>
       </View>
      )
    }

在这种情况下,我如何将数据传递给提取?

javascript react-native react-navigation
3个回答
0
投票

建议您将其添加到您的状态的所有其他答案都是错误的。您可以像在render函数中所做的一样检索值。

register = async () =>{
    const { activity } = this.props.route.params;
    const token = await AsyncStorage.getItem('id_token')

    fetch('http://192.168.0.125:8887/api/auth/activities/register',{
        method: 'POST',
        headers:{
            'Accept': 'application/json',
            'Content-Type': 'application/json',
            'Authorization': 'Bearer ' +token,
        },
        body: JSON.stringify({ activity })
    });
}

-1
投票

您可以再次使用导航道具。this.props.navigation.getParam('activity')将返回您从前一个屏幕发送的对象。


-1
投票

您可以在状态中添加活动,并在请求正文中像这样使用它

this.state= {
     activity:this.props.route.params.activity
 }

register = async () =>{
        Const {activity} = this.state
        var token = await AsyncStorage.getItem('id_token')
        console.log(token)
        fetch('http://192.168.0.125:8887/api/auth/activities/register',{
            method: 'POST',
            headers:{
                'Accept': 'application/json',
                'Content-Type': 'application/json',
                'Authorization': 'Bearer ' +token,
            },
            body: JSON.stringify({
              activity
            })

        })
    }
© www.soinside.com 2019 - 2024. All rights reserved.