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