Здравствуйте, я хочу сделать управляемый чекбокс, у которого checked становится true, если id поста совпадает с id из другого массива, но не понимаю как это сделать.
При клике на чекбокс id поста добавляется в массив закладок, поэтому хочется сделать его контролируемым
Массив с айдишниками, который я вытаскиваю из стора редакс:
const bookmarksData = useSelector((state) => state.bookmark.bookmarksData);
Сам массив выглядит вот так:
[
{
"id": 5
},
{
"id": 2
},
{
"id": 19
},
{
"id": 22
},
{
"id": 23
},
{
"id": 21
},
{
"id": 25
},
{
"id": 35
},
{
"id": 22
},
{
"id": 12
},
{
"id": 27
},
{
"id": 10
},
{
"id": 10
},
{
"id": 5
},
{
"id": 1
},
{
"id": 1
}
]
Обычный массив, который состоит из обьектов с id
Посты я вывожу с помощью map и в цикле пытался в checked добавить функцию с фильтром, которая бы искала совпадающие id и если они есть, то ставить в checked true, но после этой функции checked true работает на все посты. Не очень понимаю в чем проблема, почему все посты стали checked true
//код вне цикла
const setChecked = (idS) => {
bookmarksData.filter((e) => e.id === idS) ? true : false
}
//код в цикле, где я вывожу посты
<Checkbox
icon={<BookmarkBorderIcon />}
checkedIcon={<BookmarkIcon />}
checked={() => setChecked(id)}
onClick={() => savedBokmark({ id })}
/>
Можете подсказать в чем проблема и как сделать, чтобы чекбокс нормально работал с фильтрацией?