【发布时间】:2021-01-06 23:41:09
【问题描述】:
我有 1/ 一个无限循环,它使用 useState 来保存来自 axios 请求的数据。 我想在映射期间在视图中注入值:
import { StyleSheet, Text, View, TextInput, FlatList, Button, ScrollView } from 'react-native';
import styles from './styles'
import React, { useEffect, useState, Component } from 'react';
import App, { currentCityCode } from './app'
import axios from 'axios';
import { Dropdown } from 'react-native-material-dropdown';
function Chat(props) {
useEffect(() => {
getMessage()
}, []
);
const messApiRest = "https://..."
const [lastMessage, setLastMessage] = useState("")
const [user, setUser] = useState("")
const [categoryMessage, setcategoryMessage] = useState("")
const [idUser, setIdUser] = useState("")
const [allMessages, setAllMessages] = useState([])
const [messageOneByOne, seMessageOneByOne] = useState([])
function getMessage() {
axios.get(messApiRest + "/api/messages",
{
headers: {
'Authorization': "Bearer " + props.token,
},
params: {
'citycode': props.cityCode
},
})
.then(response => {
setAllMessages(response.data.results)
},
)
}
function getUserName(toto) {
axios.get(messApiRest + "/api/users/" + toto,
{
headers: {
'Authorization': "Bearer " + props.token,
}
}
)
.then(response => {
console.log(response.data.username)
setUser(response.data.username)
})
}
return (
<View style={styles.container}>
{allMessages.map(function (message) {
getUserName(message.author.id)
return (
<Text>{user}: {message.content}</Text>
)
})}
</View>
)
}
export default Chat
主要问题是,如果使用 useState 保存我的 {user},我会创建一个无限循环。
2/ 我尝试通过不使用 useState 保存它来避免这种情况,并直接在视图中返回值 response.data.username,但它不起作用。我知道我无法返回承诺的值,这就是我使用 useState 的原因。
我是一个初学者{可能不是一个好人},我正在尝试了解 React 和 axios 是如何工作的,但我已经到了极限,无法猜测解决方案...
谢谢你的帮助,如果有人敢的话^^
【问题讨论】:
标签: reactjs react-native infinite-loop use-state