не ответ, просто предположение:
Эта функция не ощущается как принадлежащая внутри Компонента. Это в основном чистая функция; принимает некоторые аргументы и возвращает результат. И, по крайней мере, я надеюсь, что всегда один и тот же результат для тех же аргументов
async function fetchDistance(locationOne, locationTwo) {
const res = await fetch(
"https://api.mapbox.com/directions-matrix/v1/mapbox/driving/" +
locationOne +
";" +
locationTwo +
"?sources=1&annotations=distance&access_token=****"
);
const mapBoxObject = await res.json();
const meters = mapBoxObject.distances[0];
const miles = parseInt(meters) * 0.00062137119;
console.log(miles.toFixed(2));
return miles.toFixed(2);
}
и внутри компонента, который вы только что делаете:
useEffect(() => {
fetchDistance(locationOne, locationTwo).then(setTotalMiles);
}, [locationOne, locationTwo]);
Это также может помочь вам переместить этот лог c в родительский компонент, так как я не думаю, что он принадлежит тому, который вы показываете. Компонент в вашем фрагменте - это просто контролируемый вход для получения двух местоположений. У него нет состояния и логики c, чтобы что-либо делать, кроме как получить два местоположения и переслать их в родительский компонент.
Так почему же он должен заключать в себе логику c, чтобы вычислить расстояние до двух заданных ему реквизитов, чтобы просто "вернуть" результат обратно компоненту, предоставившему реквизиты? Даже без использования этого вычисленного значения.