Вам нужно использовать хук useEffect
, чтобы запустить его только один раз.
import { useEffect } from 'react'
...
const HomeWorld = (props) => {
const [planetData, setPlanetData] = useState([]);
useEffect(() => {
if(props.Selected === true){
setPlanetData(props.Planet)
console.log(planetData)
}
}, [props.Selected, props.Planet, setPlanetData]) // This will only run when one of those variables change
return(
<h1>hi i am your starship, type: {planetData}</h1>
)
}
Обратите внимание, что при изменении props.Selected
или props.Planet
он будет запущен повторноЭффект.
Почему я получаю эту ошибку?
Слишком много повторных визуализаций.React ограничивает число визуализаций, чтобы предотвратить бесконечный цикл.
В данном случае происходит то, что когда ваш компонент выполняет рендеринг, он выполняет все в функции, вызывая setPlanetData
, который будет повторно выполнять компонент, вызываявсе внутри функции снова (setPlanetData
снова) и создание бесконечного цикла.