tengo este metodo:
const [tableDataList, setTableDataList] = useState([]); const getTableDataDetail = (value) => { let dataDetail = tableDataList; dataDetail = [...dataDetail, ...value] setTtableDataDetail(dataDetail); };Este método se llama cada vez que hago clic en un botón. Pero quiero mantener el valor anterior y agregar el nuevo valor al anterior. Pero lo que tengo es que cada vez que hago clic, el valor anterior se elimina. ¿Qué debo hacer? ?
Hay dos escenarios.
Si "valor" es un número, entonces,
let dataDetail = [...tableDataList, value]Si "valor" es una matriz, entonces,
let dataDetail = [...tableDataList, ...value]El siguiente código me funcionó.
Por número:
const [tableDataList, setTableDataList] = React.useState([]); const getTableDataDetail = (value) => { let dataDetail = [...tableDataList, value] setTableDataList(dataDetail); }; <button onClick={() => getTableDataDetail(1)}>Click</button>Para matriz:
const [tableDataList, setTableDataList] = React.useState([]); const getTableDataDetail = (value) => { let dataDetail = [...tableDataList, ...value] setTableDataList(dataDetail); }; <button onClick={() => getTableDataDetail([1,1])}>Click</button>Puede hacer una copia superficial del estado y luego agregarle un nuevo elemento:
const [tableDataList, setTableDataList] = useState([]); const getTableDataDetail = (value) => { let copy = [...tableDataList]; copy.push(value) setTtableDataDetail(copy); };const [tableDataList, setTableDataList] = useState([]); const getTableDataDetail = (value) => { setTtableDataDetail([ ...tableDataList, value ]); };