В setAddIconMenuList
вы ничего не возвращаете из функции. Попробуйте добавить возврат, как это.
setAddIconMenuList((prevState) => {
return prevState[rightNavbarType].filter((item) => {
return item !== type
})
})
Редактировать: или вы можете избавиться от скобок, окружающих тело функции. Одно подобное утверждение автоматически возвращается.
setAddIconMenuList((prevState) =>
prevState[rightNavbarType].filter((item) => {
return item !== type
})
)
Редактировать: сохранение остатка состояния
Чтобы сохранить остаток предыдущего состояния, а не просто вернуть отфильтрованный список, который вы можете попробовать что-то вроде этого:
setAddIconMenuList((prevState) => {
return {
...prevState,
[rightNavbarType]: prevState[rightNavbarType].filter((item) => {
return item !== type
})
}
})
...prevState
разделяет предыдущий объект на отдельные части, поэтому у вас будет все, что было в этом состоянии ранее, возвращенное в этом объекте.
[rightNavbarType]
использует синтаксис вычисляемого свойства ES6, поэтому вы можете получить доступ к нужному свойству, например «body». Затем вы устанавливаете "body" для нового отфильтрованного массива.