Javascript 如何在react native中更新组件信息?
我正在使用useEffect使用此api中的数据。 我想要的是,每次API中的数据发生变化时。更改组件信息Javascript 如何在react native中更新组件信息?,javascript,reactjs,react-native,async-await,axios,Javascript,Reactjs,React Native,Async Await,Axios,我正在使用useEffect使用此api中的数据。 我想要的是,每次API中的数据发生变化时。更改组件信息 const [infoUser, setInfoUser] = useState([]); const getInfoUser = async () => { try { const accessToken = await AsyncStorage.getItem('@access_token'); axios .get(
const [infoUser, setInfoUser] = useState([]);
const getInfoUser = async () => {
try {
const accessToken = await AsyncStorage.getItem('@access_token');
axios
.get(
'https://apiexample.com/cliete',
{
headers: { Authorization: `Bearer ${accessToken}` },
},
)
.then(function (response) {
// handle success
console.log('DADOS USER:', response.data.data);
const userData = response.data.data;
setInfoUser([...infoUser, userData]);
})
.catch(function (error) {
// handle error
console.log(error);
});
} catch (e) {
// error reading value
console.log('Erro de token', e);
}
};
useEffect(() => {
getInfoUser();
}, []);
在另一个屏幕上,我更改数据并保存
但上一个屏幕尚未更新。
只有当我注销并再次进入应用程序时,数据才会更改
{infoUser.map(user => (
<Text style={styles.subtitle}>Nome Completo</Text>
<Text style={styles.title}>{user.nomeCompleto}</Text>
</TouchableOpacity>
))}
{infoUser.map(user=>(
诺姆Completo
{user.nometo}
))}
如果将变量/函数传递给依赖项数组useffect
,并且这些变量/函数正在更改,则会触发useffect
。因此,如果您想依赖某些数据
,可以这样编写:
useEffect(() => {
getInfoUser();
}, [data]);
每次更新
data
时,React将调用useffect
。当我在useffect中传递userData时。我得到一个错误:userData没有定义。userData是从api返回的信息,所以根据您想要获取数据的内容,什么应该触发您的useEffect?或者你只是想要新的数据?那么也许你只需要每1分钟运行一次?我只需要新数据。当我进入屏幕1时,我必须在另一个屏幕上返回当前的API数据(已经发生的事情),我可以更新数据(屏幕2)。当我更新屏幕2上的数据时。它不会在屏幕上更改1Http无法自动知道服务器上的数据何时更改。您必须时不时地使用axios获取服务器数据(轮询),或者使用为实时数据流设计的不同internet协议。如果您想使用react实现这一点,可以查看websocket上的graphql。这是http的一个重大范例变化,因此在典型的用例中,您可能需要从头重写服务器和客户端。