То, что вы описываете, - это как работает реакция. Если состояние в вашем компоненте изменится, он будет повторно визуализировать этот компонент. Прямо сейчас каждый раз, когда состояние в вашем компоненте MetricList
изменяет, компонент MetricList
будет перерисовываться.
Что вы хотите, чтобы что-то в вашем компоненте было выполнено только при начальном рендеринге?
Если это так, вам нужно использовать что-то вроде useEffect
ловушки и визуализировать его только при первоначальном рендеринге или использовать компонент на основе классов и запустить его в componentDidMount()
или componentWillMount()
.
Так, например, если вы хотите, чтобы FetchMetricList()
запускался только один раз при начальном рендере, вы можете сделать что-то вроде следующего:
useEffect(() => {
FetchMetricList()
}, []);
или в компоненте на основе классов вы можете назвать его так:
componentDidMount(){
FetchMetricList();
}
в противном случае он будет работать на каждом рендере, как это происходит сейчас. Не уверен, что это функция, которую вы не хотите запускать при каждом рендере, но это только пример. Но такова природа использования системы компонентов, основанной на состоянии. Каждый раз, когда состояние компонентов изменяется, этот компонент перерисовывается.
Надеюсь, я понял, что вы хотели. Я был немного смущен вашим вопросом, потому что описание вашей проблемы (повторная визуализация компонента при изменении состояния) - это базовая функциональность того, как реагирует. Если я неправильно понял, пожалуйста, дайте мне знать в комментариях ниже.