'react-three, child doesn't rerender in one case, but does in the other
I'm stuck with useState not rerendering the child component in one case.
This doesn't work
day is boolean here
const Parent = () => {
const [day, setDay] = useState(true);
const onHandle = () => {
setDay((prevState) => !prevState);
};
// omitted
}
const Child = ({ day }) => {
const [colorMap] = useLoader(
TextureLoader,
[day ? EarthDayMap : EarthNightMap]
);
// omitted
But this works
day is object here
const Parent = () => {
const [day, setDay] = useState(EarthDayMap);
const onHandle = () => {
// toggling between day and night states
};
// omitted
}
const Child = ({ day }) => {
const [colorMap] = useLoader(
TextureLoader,
[day]
);
// omitted
I made the code as simple as possible.
Solution 1:[1]
If you are switching between two state. You can use these
setDay(!day)
instead of your code.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | feyyum |
