Новичок в реакте, понимаю в теории, но не могу сделать это на практике, как можно добавить элемент по клику в таблицу с 3-мя полями по инпуту?
import React,{useState} from 'react';
import './App.css';
// import Header from './components/Header';
// import Table from './components/Table';
function App() {
let data = [
{id: "1", firstName: "Иван", lastName:"Иванов", position:'Менеджер'},
{id: "2", firstName: "Пётр", lastName:"Петров", position:'Сисадмин'},
{id: "3", firstName: "Сара", lastName:"Конор", position:'Бухгалтер'},
{id: "4", firstName: "Фёдор", lastName:"Федоров", position:'Архитектор'},
{id: "5", firstName: "Алексей", lastName:"Алексеев", position:'Оператор'},
{id: "6", firstName: "Марина", lastName:"Маринина", position:'Менеджер'},
{id: "7", firstName: "Михаил", lastName:"Михайлов", position:'Директор'},
{id: "8", firstName: "Валентина", lastName:"Иванова", position:'Художник'}
];
let tempValue = { id: "9", firstName: "Ив", lastName: "Ивано", position: 'Менеджер' };
const editStyle = {
marginLeft: '10px',
};
const [newList,updateData] = useState(data);
function deleteElement(e){
e.preventDefault();
updateData((tempState)=>{
let listItems = [];
tempState.forEach(element => {
if(element.id !==e.target.attributes[2].value){
listItems.push(element)
}
})
return listItems
})
}
function addElement(e) {
updateData((tempState) => {
var listItems = [];
tempState.forEach(element => {
listItems.push(element)
})
listItems.push(tempValue)
return listItems
})
}
// function changeEdit(props){
// return (<button type = "button" className="btn btn-outline-success">Save</button>)
// }
function ListTable(props) {
var listItems = [];
newList.forEach(element => {
listItems.push(
<tr key={element.id}>
<td><input type="text" readOnly value={element.id} /></td>
<td><input type="text" readOnly value={element.firstName} /></td>
<td><input type="text" readOnly value={element.lastName} /></td>
<td><input type="text" readOnly value={element.position} /></td>
<td>
<button
type="button"
className="btn btn-outline-danger"
number={element.id}
onClick={deleteElement}>
Delete
</button>
<button
type="button"
className="btn btn-outline-success"
style={editStyle}>
Edit
</button>
</td>
</tr>
);
});
return (listItems)
}
return (
<div className='table' >
<button
type="button"
className="btn btn-outline-success"
onClick={addElement}>
Add User
</button>
<thead className="thead-dark">
<tr>
<th>ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Position</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<ListTable/>
</tbody>
</div>
)
}
export default App;
function addElement(e) {
updateData([...newList.map(elem => ({...elem})),{...tempValue}])
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Имеется многоповторная отправка рест запроса, для отправки, допустим 4000 раз, требуется много времени, каким способом можно ускорить данный...
Из элемента добавленного на страницу через innerHTML следующим образом:
При любом изменении инпута в state записывается и возвращается всегда один символ, который был нажат на клавиатуре последнимВозможно не внимательный...