Вы можете поместить все свои переменные состояния и функцию в пользовательский хук.Ваш пользовательский хук будет обрабатывать изменения состояния для вас.
permisos.js
import { useState } from 'react';
const usePermisos= () => {
const [localitzacioActual, setlocalitzacioActual] = useState(null);
const [localitzacioPermisos, setlocalitzacioPermisos] = useState(null);
const [mapRegion, setMapRegion] = useState(null);
const demanarPermisos = async () => {
let { status } = await Permissions.askAsync(Permissions.LOCATION);
if (status !== 'granted') {
setlocalitzacioPermisos('Permisos denegats')
} else {
setlocalitzacioPermisos(true)
}
let location = await Location.getCurrentPositionAsync({});
setlocalitzacioActual(JSON.stringify(location))
setMapRegion({ latitude: location.coords.latitude, longitude: location.coords.longitude, latitudeDelta: 0.0022, longitudeDelta: 0.0121 });
};
return [
localitzacioActual,
localitzacioPermisos,
mapRegion,
demanarPermisos,
];
};
export default usePermisos;
Затем импортируйте их туда, где они вам нужны.Вы все еще должны использовать useEffect для запуска вашей функции.
screen1.js
import React, { useEffect } from 'react';
import usePermisos from './usePermisos';
const screen1 = () => {
const [
localitzacioActual,
localitzacioPermisos,
mapRegion,
demanarPermisos,
] = usePermisos();
useEffect(demanarPermisos, []);
return (
<div>React Functional Component</div>
);
};
export default screen1;
Если вам нужны сеттеры за пределами demanarPermisos
, вы можете вернуть их из usePermisos
.