Si queremos refrescar una pantalla al volver desde otra pantalla usando React Native, tenemos que hacer lo siguiente:

Primero importamos react-navigation
import { useFocusEffect } from '@react-navigation/native';
Después lo añadimos en nuestro render:
useFocusEffect(
React.useCallback(() => {
}, [])
);
Y dentro de React.useCallback, realizamos las llamadas que queramos refrescar. En [] podemos poner la variable que cambia al regresar de otra pantalla por ejemplo [codigo].
useFocusEffect(
React.useCallback(() => {
console.log("Codigo cambia a: " + codigo)
}, [codigo])
);
Otra opción o si tenemos distintos navigation:
useEffect(() => {
const unsubscribe = navigation.addListener('focus', () => {
console.log('In Navigation Add Listener Block');
refresh();
return unsubscribe;
}, [navigation]);
}, [navigation]);
Este suscribirá a cambios producidos por navigation y solo invocará useEffects cuando haya cambios en navigation.
Si tenemos dos navigation podemos duplicar el código de la siguiente forma:
useEffect(() => {
const unsubscribe = navigationInicial.addListener('focus', () => {
//console.log('In Navigation INICIAL Add Listener Block');
refresh();
return unsubscribe;
}, [navigationInicial]);
}, [navigationInicial]);
useEffect(() => {
const unsubscribe = navigation.addListener('focus', () => {
//console.log('In Navigation Add Listener Block');
refresh();
return unsubscribe;
}, [navigation]);
}, [navigation]);

Ingeniero en Informática, Investigador, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.