Estoy usando la tabla de reacción y estoy tratando de configurar las filas seleccionadas en la carga. He creado algunos datos falsos para probar con los que puedes ver en la const de datos falsos. Luego intento encontrar una coincidencia entre los datos de mi tabla y los datos falsos, y si existe una coincidencia, actualizo el estado de setMySelectedRows .
En mi código, obtengo las coincidencias correctamente (primer registro de la consola), pero el estado siempre vuelve en blanco (segundo registro de la consola después de configurar el estado).
No estoy muy seguro de lo que estoy haciendo mal aquí? Por lo general, usaría una matriz y empujaría mis elementos, pero la tabla de reacción espera que sea un objeto como el siguiente:
{"0": true, "9": true, "12": true}Aquí está mi código:
const [mySelectedRows, setMySelectedRows] = useState({}); const fakeData = [ {"collectibleId": "b94e5d49-35f0-4bdc-9e41-d5c484df5ae7", "quantity": 2}, {"collectibleId": "1def2f37-8043-4aa8-a490-b4024db216ff", "quantity": 2}, {"collectibleId": "ac5bc2af-f67d-46da-bac1-1b404a3dd6d1", "quantity": 2} ] useEffect(() => { let selectedObj = {} collectibles && collectibles.map((collectibleRow, index) => { var check = fakeData.find(c => c.collectibleId === collectibleRow.collectibleId); const stringMyIndex = `${index}` selectedObj = {[stringMyIndex]: true} if (check){ console.log('found a match. ', selectedObj) // prints as expected setMySelectedRows({...mySelectedRows, "0": true, "9": true}) console.log('selected rows state is: ', mySelectedRows) // prints blank object } }) }, [collectibles])