Вызов setState пусть будет один, а при вычислении минимума и максимума обращайтесь не к стейту, а к только что полученным данным. Т.е., вместо
this.setState({ studios: res.data, isLoading: false })
this.setState({ max: this.state.studios.reduce((l, e) => (e.price > l.price ? e : l)) });
this.setState({ min: this.state.studios.reduce((l, e) => (e.price < l.price ? e : l)) });
пусть будет
this.setState({
studios: res.data,
isLoading: false,
max: res.data.reduce((l, e) => (e.price > l ? e.price : l), -Infinity),
min: res.data.reduce((l, e) => (e.price < l ? e.price : l), Infinity),
});
// или, без reduce'ов
const prices = res.data.map(n => n.price);
this.setState({
studios: res.data,
isLoading: false,
max: Math.max(...prices),
min: Math.min(...prices),
});