Javascript 方法';s返回不';t显示[本机反应]

Javascript 方法';s返回不';t显示[本机反应],javascript,react-native,Javascript,React Native,我的代码中的方法有问题(React Native) 我有一个ID数组,我想在每个ID中发出一个“GET”请求,为每个ID显示一张预览卡 这就是我在数组中使用“map”方法的原因。 请求工作正常,然后我调用我的方法cardUser(user)来显示 这是我代码中绘制地图的部分(工作正常): 现在我在responseData中有了我的响应,我想展示和展示每个用户。所以每次我都用user对象调用cardUser() cardUser(user) { console.log(user.id);

我的代码中的方法有问题(React Native)

我有一个ID数组,我想在每个ID中发出一个“GET”请求,为每个ID显示一张预览卡

这就是我在数组中使用“map”方法的原因。 请求工作正常,然后我调用我的方法
cardUser(user)
来显示

这是我代码中绘制地图的部分(工作正常):

现在我在
responseData
中有了我的响应,我想展示和展示每个
用户
。所以每次我都用
user
对象调用
cardUser()

cardUser(user) {
    console.log(user.id);
    return (
        <TouchableHighlight underlayColor='transparent' key={user.id}
            onPress={() => this.props.navigation.navigate('UserProfile', {id: user.id})} onLongPress={() => this.alertUserId(user.id)} >
            <View style={container.card}>
                    <View style={container.cardUser}>
                        <Image source={{uri: user.banner}} style={{position: 'absolute', width: '100%', height: 170, borderRadius: 20}} />
                        <View style={container.darkLayer}>
                            <Left>
                                <Thumbnail large source={{uri: user.photo}} style={{alignSelf: 'center'}}/>
                            </Left>
                            <Body>
                                <View style={{alignItems: 'center'}}>
                                    <Text style={text.pseudoHomepage}>{user.username}</Text>
                                    <Text style={[text.stats, {color: 'white'}]}>{user.first_name}</Text>
                                </View>
                            </Body>
                            <Right>
                                <Icon ios='ios-medal' android='md-medal' style={{color: 'white', alignSelf: 'center', fontSize: 40}}/>
                            </Right>
                        </View>
                        <View style={container.darkFooterLayer}>
                            <Text numberOfLines={2} style={text.bioFotter}>{user.bio}</Text>
                        </View>
                    </View>
            </View>
        </TouchableHighlight>
    );
}
cardUser(用户){
console.log(user.id);
返回(
this.props.navigation.navigate('UserProfile',{id:user.id})}onLongPress={()=>this.alertUserId(user.id)}>
{user.username}
{user.first_name}
{user.bio}
);
}
但这并不是什么。。。但是,如果我制作一个
console.log(user)
它会在我的日志中显示正确的内容!以正确的顺序,没有重复的对象或任何其他

此外,如果我在
return()
中放置
console.log(user)
,它也会显示正确的内容,并且我没有任何错误或警告消息

我希望我说得够清楚,如果你需要更多信息,请告诉我。 祝你今天愉快,谢谢


(如果我拼写错误,很抱歉,英语不是我的语言)

首先,您需要获取所有数据。不能在render方法中执行此操作

componentDidMount() {
  Promise.all(this.state.user.following.map(this.fetchUser))
    .then(userFetchedArray => this.setState({ usersList: userFetchedArray }))
}

fetchUser(id) {
  return fetch(api.base_url + api.user_url + '/' + id, {
    method: "GET",
    headers: { 'Authorization': 'Bearer ' + this.state.token }
  })
  .then((response) => response.json());
}
然后,您需要呈现获取的数据:

render() {
...
<Content padder>
  {this.state.usersList.map(this.cardUser)}
</Content>
...
render(){
...
{this.state.usersList.map(this.cardUser)}
...

传递给map的回调应返回jsx,但在您的情况下,它返回
未定义的
(getUserByID函数不返回任何内容)。此外,如果去掉透明的参考底图颜色,则此回调不能是异步的

,它是否显示?尝试用低活动不透明度(但不是0不透明度)替换透明的参考底图颜色然后看看它是否会出现..没有,因为之前它与其他配置一起工作,但我更改了API,所以我不得不这样做。我还尝试了一个测试,但它没有显示任何东西实际的渲染组件在哪里?我看到很多函数被调用,但没有渲染?谢谢,但根据您的回答,我有一个警告:[未处理的承诺拒绝:TypeError:_this4.cardUser不是函数。(在“_this4.cardUser(responseData)”中,_this4.cardUser”未定义)]您知道原因吗?您是否已将组件绑定到方法?
componentDidMount() {
  Promise.all(this.state.user.following.map(this.fetchUser))
    .then(userFetchedArray => this.setState({ usersList: userFetchedArray }))
}

fetchUser(id) {
  return fetch(api.base_url + api.user_url + '/' + id, {
    method: "GET",
    headers: { 'Authorization': 'Bearer ' + this.state.token }
  })
  .then((response) => response.json());
}
render() {
...
<Content padder>
  {this.state.usersList.map(this.cardUser)}
</Content>
...