I want to add the coordinates x
and y
(from the loop) to the state (matrix
) like you can see in my example but it won’t work. Can someone help me?
const [matrix, setMatrix] = useState([[], []] as any) for (let j = 0; j < imgHeight * scale; j += props.gridsize.height) { for (let i = 0; i < imgWidth * scale; i += props.gridsize.width) { console.log('x: ' + x + ' ===== ' + 'y: ' + y) drawImgRectangles(ctx, [{ x: x, y: y, width: props.gridsize.width, height: props.gridsize.height }]) x += props.gridsize.height } x = 0 y += props.gridsize.height } setMatrix([...matrix, [[x][y]]]) console.log(matrix[[0][0]]) **
Advertisement
Answer
The problem is in expression [x][y]
which evaluates to undefined.
[x]
defines an array containing one elementx
[x][y]
tries to index the[x]
array, takingy
-th element. If y is anything other than 0, the result isundefined
console.log([3][0]); // 3 console.log([3][1]); // undefined
You probably meant one of:
const x = 1; const y = 2; var matrix1: number[][] = []; matrix1 = [...matrix1, [x, y]]; var matrix2: number[][][] = []; matrix2 = [...matrix2, [[x], [y]]];