Paul14, хотя ошибаюсь, ты был прав он их мутирует, но так как в useState заносится уже новая ссылка на массив - то при вызове setObj потом будет ререндер где данные обновятся
массив новый, несмотря на то что ссылки у объектов внутри старые, поэтому ререндер будет
Paul14, map возвращает новый массив, поэтому ссылки не остаются, здесь нет мутаций + к тому же явно ты создаешь новый массив куда разворачиваешь массив obj, дважды создаётся новый массив грубо говоря
Можешь вернуть jsx, ничего страшного в этом нет, можешь даже вернуть объект в котором будет поле целого компонента, и тогда ты из этого хука можешь достать и компонент и какие-то методы для работы с ним же, экспериментируй
smir11, я не знаю как тебе ещё проще объяснись, у тебя не существует В ПРИНЦИПЕ data[i] и темболее для data[i] - НЕТ ВОЗМОЖНОСТИ ПРИСВОЕНИЯ СВОЙСТВА ID
smir11, пишет ошибку тебе, что не может обратиться к id у undefined контекста, если ты с этой ошибкой справиться не можешь, дальше будет же только сложнее, как поступишь ?
Да и вообще это больше относится к знаниям js, чем к реакту, реактом тут в ошибке этой и не пахнет + ты ключи забыл указать там где-то
behance + пару ссылок на живые проекты где как раз таки и сверстаны сайтики по твоему дизайну ( ссылки попросить можно у тех людей, для которых ты и создавал дизайн, делов то )
если ссылки будут, то и нет смысла вкладывать в сайт портфолио и тогда очевидно что следует
FrolovSite, код который я исправил - работает только для одного блока, если подумать то можно тупо скопипастить тебе и изменить обёртку у блоков или разное название дать инпутам и повесить разные обработчики кароч не сложно но с этой рутиной вряд ли поможет кто-то, никто не захочет