Задать вопрос
@lexstile

Как правильно редактировать подобный state в react?

Есть такой код:
const data = [
  { id: 1, value: "тест 1" },
  { id: 2, value: "тест 2" }
];

const [list, setList] = useState([]);

  const handleChangeItemValue = (id) => (e) => {
    const value = e.target.value;
    const index = list.findIndex((item) => item.id === id);
    const newList = [...list];
    newList[index].value = value;
    setList(newList);
  };

useEffect(() => setList(data), []);

  return (
    <div>
      {list.map((item) => (
        <label key={item.id} style={labelStyles}>
          <input
            style={inputStyles}
            value={item.value}
            onChange={handleChangeItemValue(item.id)}
          />
          <button onClick={handleClickRemoveItem(item.id)}>х</button>
        </label>
      ))}
      <button onClick={handleClickAddItem}>Добавить</button>
      <div style={valueStyles}>{renderItemValues()}</div>
    </div>
  );

Можно это как-то иначе и, может, более правильно отредактировать?
  • Вопрос задан
  • 38 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
Решения вопроса 1
@abberati
frontend-разработчик
const handleChangeItemValue =
  id =>
    ({ target: { value } }) =>
      setList(
        list => list.map(item => item.id === id ? { ...item, value } : item)
      )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽