@mosikus

Как создавать новую ячейку при заполнении инпута (вводе данных) и нажатии на кнопку?

Здравствуйте. Допустим, у меня есть объект
const test = [
  { id: "1", name: "name1" },
  { id: "2", name: "name2" },
  { id: "3", name: "name3" },
  { id: "4", name: "name4" },
  { id: "5", name: "name5" },
  { id: "6", name: "name6" },
  { id: "7", name: "name7" },
  { id: "8", name: "name8" },
  { id: "9", name: "name9" }
];

и я его вывожу
class App extends React.Component {
  state = {
    search: ""
  };

  get test() {
    return test;
  }

  render() {
    return (
      <div>
        <div>
          {this.test.map((kef, i, a) => (
            <div>
              <div>name: {kef.name}</div>
              <div>id: {kef.id}</div>
            </div>
          ))}
        </div>
      </div>
    );
  }
}

https://codesandbox.io/s/sharp-bartik-d6jju?file=/...
Ну, это не важно. У меня вопрос немного о другом, это просто пример. Я без бека, но как то потестить, посмотреть хотелось бы. Допустим, есть у меня в приложении 2-3 инпута, пользователь их заполняет и нажимает кнопку "создать". И на одной из панелей появляется ячейка с заполненными данными. Как такое можно реализовать? Думал просто на стейтах сделать, но это совсем бред. И поправьте, пожалуйста, название вопроса.
  • Вопрос задан
  • 56 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега React
function App(props) {
  const [ items, setItems ] = React.useState([...props.items]);
  const [ name, setName ] = React.useState('');

  const add = () => setItems([
    ...items,
    {
      id: 1 + Math.max(0, ...items.map(n => n.id)),
      name,
    },
  ]);

  return (
    <div>
      <div>
        <input onChange={e => setName(e.target.value)} />
        <button onClick={add}>add</button>
      </div>
      {items.map(n => (
        <div key={n.id}>
          {Object.entries(n).map(([ k, v ]) => <div>{k}: {v}</div>)}
        </div>
      ))}
    </div>
  );
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
kirbi1996
@kirbi1996
С помощью спред оператора сеттишь, для того чтобы добавить на нужную позицию используй длину массивв
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы