I have this method:
const [tableDataList, setTableDataList] = useState([]);
const getTableDataDetail = (value) => {
let dataDetail = tableDataList;
dataDetail = [...dataDetail, ...value]
setTtableDataDetail(dataDetail);
};
This method is called every time I click a button But I want to keep the previous value and add the new value to the previous one..But what I have is that every time I click, the previous value is deleted.What should I do?
There are two scenarios.
If "value" is number then,
let dataDetail = [...tableDataList, value]
If "value" is array then,
let dataDetail = [...tableDataList, ...value]
The below code is worked for me.
For number:
const [tableDataList, setTableDataList] = React.useState([]);
const getTableDataDetail = (value) => {
let dataDetail = [...tableDataList, value]
setTableDataList(dataDetail);
};
<button onClick={() => getTableDataDetail(1)}>Click</button>
For Array:
const [tableDataList, setTableDataList] = React.useState([]);
const getTableDataDetail = (value) => {
let dataDetail = [...tableDataList, ...value]
setTableDataList(dataDetail);
};
<button onClick={() => getTableDataDetail([1,1])}>Click</button>
You can make a shallow copy of the state and then add new item to it:
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 ]);
};