React native React useState钩子不更新渲染文本

React native React useState钩子不更新渲染文本,react-native,react-hooks,React Native,React Hooks,我正在使用钩子打印对话列表,其中包含联系人的姓名以及每个联系人的最后一条消息 我正在使用一个间隔来检查每次对话的最后一条消息是否已更改。它与API一起工作,我获取内容并使用setState对其进行更改,但当我尝试在渲染部分获取内容时,我得到的是旧的内容 下面是一些代码: const _getMessages = () => { setDataMsg(''); if (dataContacts) { dataContacts.map((itemValue, i

我正在使用钩子打印对话列表,其中包含联系人的姓名以及每个联系人的最后一条消息

我正在使用一个间隔来检查每次对话的最后一条消息是否已更改。它与API一起工作,我获取内容并使用setState对其进行更改,但当我尝试在渲染部分获取内容时,我得到的是旧的内容

下面是一些代码:

const _getMessages = () => {
    setDataMsg('');
    if (dataContacts) {
        dataContacts.map((itemValue, itemIndex) => {
            ApiClient.instance.getConversation(itemValue.id).then(response => {
                if (response.status === 200) {
                    setDataMsg([...dataMsg, response.data[response.data.length-1].content]);
                    console.log('getting all messages ', response.data[response.data.length-1].content);
                }
            }).catch(error => {
                console.log(error);
                Alert.alert('Erreur', 'Impossible de récupérer les messages')
            })
        })
    }
    else
        clearInterval(intervalMsg);
    if (props.navigation.state.routeName !== "MessagesPage") {
        clearInterval(intervalMsg);
    }
}



// Affichage du dernier message //
    const _showMessage = (index) => {
        if (dataMsg) {
            return (dataMsg[index]);
        }
        return ('Aucun message');
    }
以及渲染:

<FlatList
                        style={getStyle().messageList}
                        data={dataContacts}
                        extraData={dataMsg}
                        refreshing={true}
                        keyExtractor={(item) => {
                            return item.id.toString();
                        }}
                        renderItem={({item, index}) => {
                            return (
                                <TouchableOpacity
                                    style={getStyle().card}
                                    onPress={() => {
                                        cardClickEventListener(item)
                                    }}>
                                    <View style={getStyle().cardImage}>
                                        <Image style={getStyle().image}
                                               source={_handleImg(item)}/>
                                    </View>
                                    <View style={getStyle().cardContent}>
                                        <Text
                                            style={[getStyle().name, {fontFamily: props.font}]}>{item.firstName + " " + item.lastName}</Text>
                                        <Text
                                            style={{fontFamily: props.font, fontStyle:'italic'}}>{_showMessage(index)}</Text>
                                    </View>
                                    <View style={getStyle().cardIndicator}>
                                    </View>
                                </TouchableOpacity>
                            )
                        }}/>
{
return item.id.toString();
}}
renderItem={({item,index})=>{
返回(
{
cardClickEventListener(项目)
}}>
{item.firstName+“”+item.lastName}
{u showMessage(index)}
)
}}/>

您是否尝试将列表中显示的数据设置为extradata?是的,我就是这么做的!