I am trying to update Redux Set.
target is selectedRows
const initialState = {
columns: [{ key: "hi", name: "hyun" }],
basicRows: [{
}],
pageInfo: {
page: 1,
total: 1
},
selectedRows: new Set<any>()
} as TaskBoardState;
I tried the update but error is occured
const passSelectedDataToPage = () => {
console.log("등록 버튼 클릭");
console.log("selectedRows : ", selectedRows);
// let tmp: Set<any> = selectedRows;
let tmp: Set<any> = new Set(selectedRows_for_users_table);
let tmp2: Set<any> = selectedRows;
const rows_for_register = basicRows.map((row: any) => {
if (selectedRows.has(row._id) && !selectedRows_for_users_table.has(row._id)) {
tmp.add(row._id)
return {
...row,
id: row._id,
email: user.email,
name: user.name,
test_complete: "false"
}
}
}).filter((v) => v);
setSelectedRows(tmp);
console.log("rows_for_register : ", rows_for_register);
// 추가로 등록한 경우
dispatch(
taskBoardSlice.actions.setSelectedRows(tmp)
)
dispatch(
taskBoardSlice.actions.addMultiRowsForSearchBoardForReadyToRegister(rows_for_register)
)
// 취소한 경우 기존거에서 취소한걸 빼야 된다
// 리덕스 선언: selectedRows: new Set<any>()
// 컴퍼넌트에서 가져오기:
// let selectedRows_for_users_table = useSelector((state: RootState) => state.task_board.selectedRows);
const before_selecetd_rows = selectedRows_for_users_table;
const new_selected_rows = selectedRows;
console.log("before_selecetd_rows : ", before_selecetd_rows);
console.log("new_selected_row : ", new_selected_rows);
selectedRows_for_users_table.delete(new_selected_rows);
setIsOpen(false);
}
error messae: error message: Error: [Immer] This object has been frozen and should not be mutated
my question is this: why this error is occuered? and how to fix error?
thanks