Это потому, что вы не передаете значение, когда говорите const filter = state.filter;
, а передаете его ссылку.
Например, рассмотрите Книжную полку с книгой JS поверх нее в Библиотеке. Когда вы посещаете Libraria, вам не дают копию книги, но ее местоположение. Так что если вы порвете страницу книги и сохраните ее на прежнем месте. Библиотекарь также может увидеть разорванную страницу. Но если вы не хотите, чтобы это произошло. Вам нужно получить копию книги и оторвать от нее страницы, в то время как книга на полке останется такой, как есть.
Поэтому, когда вы хотите сделать копию данных и сохранить ее в переменной, ES6 представила простой способ сделать это, чем раньше неуклюжий способ. так что const filter = state.filter;
станет этим const filter = [...state.filter]; // this makes copy of array