just been reading this: .html#reactpureponent
and trying to work out when would a function not return something pure?
surely if you give a ponent the same props/state then it will always return the same result?
just been reading this: https://reactjs/docs/react-api.html#reactpureponent
and trying to work out when would a function not return something pure?
surely if you give a ponent the same props/state then it will always return the same result?
Share Improve this question asked Jan 3, 2019 at 14:27 Red BaronRed Baron 7,70112 gold badges47 silver badges112 bronze badges2 Answers
Reset to default 6If your function ponent has any side effects, then it would not be a pure ponent. For example, reading the current time via Date.now()
is a side effect. If that date is passed via prop, then you're fine. But React/JavaScript cannot guarantee that a function ponent doesn't have side effects.
Consider the following function ponents.
function Impure() {
return <p>{Date.now()}</p>
}
function Pure(date) {
return <p>{date}</p>
}
Imagine if you had a ponent that showed the weather and a background image of the sun if it's daytime and a background picture of the moon if it's night.
You would pass in the temperature, wind speed etc. through props, but you would display the correct image depending on the time of day.
So, if you pass the temperature of 15 degrees during the day and during the night, the ponent will look differently even though you have passed the same props.