169 похожих чатов

Привет, использую useState<RolePermissions[]>(new Set()) и для добавления массива делаю setRolePermissions((previousState) =>

new Set([...previousState, arr]));
но ничего не получается , можете подсказать как я могу это реализовать ?

18 ответов

10 просмотров

А зачем в initial state new Set передавать ?

Jasmin-/ Автор вопроса
Jasmin-/ Автор вопроса

сорри , неправильно выразилась , пытаюсь создать коллекцию без дублирующих значении

Не туда

Jasmin /
когда делаю так выходят ошибки

Так ты стейт не до конца затипизировала, у тебя ведь может быть кейс когда у тебя один элемент ещё а ты заьипизировала как массив и все , а другие варианты не учла

Jasmin-/ Автор вопроса
Jasmin /
дело в том что он всегда будет массивом ,

Да , но там ведь может быть один объект?

Jasmin-/ Автор вопроса
Jasmin /
тогда как я могу затипизировать его?

Я бы попробовал для начала в начальное состояние передать пустой массив. А затипизировать RolePermisoons | RolePermissions[] | []

Александр Малыхин
Да , но там ведь может быть один объект?

А чем массив с одним элементом не массив? Совет ниже выглядит как вредный Выше верно писали, что Set от списка отличается довольно фундаментально, и эти типы не смешиваются.

Вот здесь вы говорите, что тип стейта - массив, а в начальное состояние передаёте Set, который массивом не является. Если там нужен Set, то и укажите везде его, без массива. Например, так: `useState<Set<RolePermissions>>(new Set())

Jasmin-/ Автор вопроса

ну я пробовала вывести в консоль и там отображаются изменения сета

может быть причина в forEach

Jasmin /
ну я пробовала вывести в консоль и там отображаютс...

А консоль более реактивна) Например, вот тут я могу видеть мой элемент в объекте, выведенном до того, как я этот элемент добавил

Jasmin-/ Автор вопроса
Хракс Мамцов
может быть причина в forEach

дело в том что set перебирается с for и forEach . с map не смогла сделать

Хракс Мамцов
может быть причина в forEach

Кстати да, в коллбеке функция, которая ничего не делает

Похожие вопросы

Обсуждают сегодня

$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
И ещё вопрос: можно ли типа как на дос как-то запариться и с помощью прерываний выводить текст, вместо функции printf ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
34
Ладно, ещё тупого спрошу. Код должен банально вывести значение регистра на консоль, на деле же не выводя ничего, просто оставляя нерабочую консоль (открыта, ничего не написан...
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
25
здравствуйте. пытаюсь проверить, содержится ли в десятичном представлении инта некоторая цифра. совершаю: strstr(x, "5") != NULL) получаю ошибку с фото (заведомо неработающий ...
Катя Шевчук🪇
18
Что там вообще с кроссплатформенностью?
🄼🄰🄺🅉🄰🄸
23
Ребята. Этот вопрос мучает меня уже 13 - 15 лет. Почему при валидации в ФормЛистере у поля phone поведение странноватое и отличается от других? А именно, вот набор правил д...
Андрей [aharito] Харитонов
1
Доброй ночи. Вопрос знатокам. Имеется некая таблица, результат которой выведен в DBGrid на форме. И есть форма, с помощью которой можно как добавить запись, так и отредактиров...
Евгений
28
{ char buff = *start; *start = *end; *end = buff; } Из-за этой строчки? Что каждый символ через перем бафф? Как вариант использовать другие со...
Wenks
12
а всё почему? потому что ассемблер в отличии от яву порождает множество пагубных привычек, среди которых например можно отметить использование глобальных переменных для всего ...
Mixail Frolov
35
Кстати, а я вот тут подумал. Допустим, у нас имеется цикл который выполняет огромное количество итераций, но мы хотим, чтобы какие-то действия исполнилось только один раз. В Я...
The Bird of Hermes
23
Карта сайта