Estoy usando la biblioteca React Datasheet Grid, el componente principal tiene una propiedad llamada OnActiveCellChange , a la que paso mi función personalizada:
const [selectedCell, setSelectedCell] = useState([]) ... function handleCellSelection({ cell }) { if(cell) { const {row, col} = cell; const newData = data[row][col]; if(!newData.unpickable) { console.log(selectedCell); // prints empty array setSelectedCell(selectedCell => [...selectedCell, newData.value]); } } } ... <DataSheetGrid className={'overwriteDisabledStyles'} value={data} onChange={setData} columns={columns} onActiveCellChange={handleCellSelection} headerRowHeight={false} gutterColumn={false} lockRows />El problema es que deseo hacer algunas comprobaciones con la variable de estado "selectedCell", aunque logré actualizar el estado con el formulario funcional, no puedo acceder a la variable de estado. Logré usar la variable usando "useRef".
Quiero saber si puedo abordar el problema de alguna otra manera.
EDITAR:
Tratando de aclarar mi pregunta:
Lo que quiero es, dentro de la función handleCellSelection , hacer algunas comprobaciones antes de insertar newData usando setSelectedCell . Como buscar en la matriz de celdas selectedCell los valores existentes:
const valueAlreadyExists = selectedCell.some((existingCell) => { return existingCell === newData.value }); Sin embargo, cuando se llama a la función handleCellSelection , el valor de selectedCell siempre es una matriz vacía. Deben ser los valores que se insertan en la matriz. Sé que hay valores allí porque cuando console.log fuera de handleCellSelection aparecen correctamente.
Entonces, logré acceder a ellos dentro de handleCellSelection usando useRef() pero lo que estoy buscando es otra opción para resolver esto.