Hej, staram sie napisac prosta gre typu candy crush. Chcialbym stworzyc sobie tablice ktora mialaby w sobie wiersze i kolumny a wiec pisze cos w stylu:
import { useState } from 'react';
import GridObject from './GridObject';
const colSize:number = 10;
const rowSize:number = 10;
type GridObject = {
color:string,
rowIndex:number,
colIndex:number
}
function GameMap() {
const [gridsArray, setGridsArray] = useState([]);
const generateGrid = () =>
{
let gridArray:Array<Array<GridObject>> = [];
for(let i = 0; i < rowSize; i++)
{
let rowArr = [];
for(let j = 0; j < colSize; j++)
{
rowArr.push(new GridObject());
}
console.log("dupa")
gridArray.push(rowArr);
}
setGridsArray(gridArray);
gridArray.map((el) => {
console.log(el);
})
}
return(
<div>
</div>
)
}
export default GameMap;
Wywala blad:
Argument of type 'GridObject[][]' is not assignable to parameter of type 'SetStateAction<never[]>'.
Type 'GridObject[][]' is not assignable to type 'never[]'.
Type 'GridObject[]' is not assignable to type 'never'.ts(2345)
Rozumiem ze nie moge do usestate przypisac tablicy ktora ma w sobie inne tablice, jest na to jakies rozwiazanie?
Poza tym Wyobrazam sobie GridObject jako poszczegolna kratke, ktora ma konkretny wiersz oraz kolumne.
Chcialbym zeby GridObject byl standardowa klasa ktora ma w sobie wszystkie informacje w stylu stanu, grafiki, wymiarow itd. Tylko jak niby mialbym tworzyc instancje owej klasy w react, poniewaz chyba nie moge po prostu napisac rowArr.push(new GridObject());
Moge pisac standardowe klasy czy raczej nie tedy droga i powinienem konkretna kratke napisac jako osobny component cos w stylu:
const GridObject = () => {
return(
<div className="grid">
</div>
)
}
export default GridObject;
i wrzucac tam parametry w formie props?
Generalnie mozna w react mieszac standardowe klasy z construktorem itd. z reactem czy raczej tego unikac i o wszystkim myslec jak o componentach?