Ожидаемый результат: создать поддельный API --> вызвать функцию save --> метод POST --> сохранить объект time в this.state.resul --> сохранить db.json todos id 2
Я использую библиотеку Fake an API with JSON Server.
db.json
{
"todos": [
{
"id": 1,
"title": "AAAA"
"results": [
{
"time": "09:10:01",
"desc": "bbbbb"
},
{
"desc": "gfgfgfgffg",
"time": "21:30:06"
}
]
},
{
"id": 2,
"title": "BBBBBBB",
"results": [
{
"time": "09:10:01",
"desc": "reerrererer",
},
{
"desc": "dfdfdfdfdfdfdfdfdfdfdf",
"time": "21:30:06"
}
]
}
}
Todos
class Todos extends Component {
constructor (props) {
super(props);
this.state = {
todos: []
}
}
componentDidMount() {
axios.get("http://localhost:3000/todos")
.then(response => {
this.setState({
todos: response.data
});
})
.catch(error => {
console.info('Error);
}
);
}
render () {
return(
)
}
}
export default Todos;
Секундомер
class StopWatch extends Component {
constructor() {
super();
this.state = {
resul: []
};
}
save = () => {
const resul = this.state.resul;
this.clock = {
clock: this.clock
}
resul.push(this.clock);
this.setState({
resul
});
axios.post(`http://localhost:4000/todos/2`, {
results: this.clock
})
.then(function (response) {
console.info(response);
})
.catch(function (error) {
console.info(error);
});
}
}
render () {
return (
<ul className = "results">
{
this.state.resul
.map((item, index) =>
<Time
key= {index}
/>
)
}
</ul>
);
}
}
export default StopWatch;



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Используйте put для обновления массива и передайте весь объект, который вы хотите обновить.
save = () =>{
const resul = JSON.parse(JSON.stringify(this.state.resul));
this.clock = {
clock: this.clock
};
resul.push(this.clock);
this.setState({
resul
});
const todo = {
id: 2,
title: 'BBBBBBB',
results: resul
};
axios
.put(`http://localhost:4000/todos/2`, todo)
.then(function(response) {
console.info(response);
})
.catch(function(error) {
console.info(error);
});
}