I am trying to make a sudoku web app, It consists from a parent component which renders all blocks. Even though every child keeps its own state with the current value inside (all that player could change) I have to update the complete array. It looks something like this
const playerTable = [
[0, 1, 6, 0, 0, 3, 0, 9, 0],
[0, 0, 0, 7, 8, 9, 5, 0, 0],
[7, 9, 0, 0, 0, 6, 3, 2, 4],
[0, 0, 7, 5, 0, 8, 2, 6, 9],
[1, 0, 9, 0, 0, 0, 8, 0, 3],
[0, 8, 2, 0, 3, 7, 0, 0, 0],
[9, 0, 1, 3, 0, 4, 6, 0, 5],
[0, 7, 3, 0, 0, 0, 1, 0, 2],
[4, 6, 5, 0, 2, 1, 9, 0, 7],
]
My idea was to pass the position and new value when state in cube changes and then parent updates the playerTable
playerTable[row][col] = newVal
The problem is all children are re-rendered on any change of state from child to parent, which would be about 36 re-renders.
Is there a way to optimize this or should I leave it like that? Thanks in advance!
Speaking from my knowledge of React...
If your parent component must hold the entire array in its state, whenever that state is updated, all child components will re-render, no matter what. This is a key part of the React diffing algorithm for the virtual DOM.
If you want to make your renders more efficient, then I would say you need to segment and lower your component state, or turn that parent component array state into just data logic that isn't tied to state and re-renders.
Ultimately though, especially with React, I would only bother optimising render cycles if your application is screaming for that optimisation. If your app performs well, then you probably shouldn't waste the time.