Array is referenced through it’s memory location. This location doesn’t change when there is some update over array. A react state takes this location. But since the location doesn’t change so react won’t be able to understand if an array got updated. So, there is no re-rendering on array state change in a component.
Solution with Code Example
Create a copy (not another memory reference) of array and do the necessary update over it. Then use this array on state. Since this is a different array so it’s memory location is different and it will trigger re-render. This will re-render even if you won’t do any update over it.
import React, {useState} from 'react'
export default function ArrayWillReRender(props) {
const [arr, setArr] = useState([])
const [totalClicks, setTotalClicks] = useState(0)
const onButtonClick = () => {
setTotalClicks(totalClicks + 1)
const tempArr = [...arr]
tempArr.push('✔️')
setArr(tempArr)
}
return(
<div>
<p>Total Clicks - {totalClicks}</p>
<p>{arr}</p>
<p>
<button onclick={onButtonClick}>Add Click</button>
</p>
</div>
)
}
Output –
