#reactjs
#reactjs
Вопрос:
Я пытаюсь обновить свое приложение, чтобы на каждом отображаемом автомобиле была кнопка удаления, которая удаляла бы автомобиль из базы данных при нажатии.
В моем компоненте deleteButton у меня есть следующее, которое выдает мне сообщение об ошибке car is not defined
:
import React from 'react';
class DeleteButton extends React.Component {
constructor() {
super();
this.state = {
};
this.handleClick = this.handleClick.bind(this);
}
delete(car){
const data = this.state.data.filter(i => i.id !== car.id)
this.setState({data})
}
render() {
const label = 'Delete';
return (
<button className="delete-btn" onClick={this.delete.bind(this, car)}>{label}</button>
);
}
}
export default DeleteButton;
Как я должен определять car
?
Комментарии:
1. Откуда
car
происходит? Откудаthis.state.data
происходит? Что внутриthis.state.data
?2. используете ли вы redux? возможно, сейчас самое подходящее время для его реализации, поскольку вам требуется доступ к данным из подкомпонента. Или вы должны создать функцию удаления в родительском, где она может получить доступ к полному списку данных.
3. Я также использую Redux, может быть, это лучший подход?
Ответ №1:
1. Вам нужно перевести car в состояние, подобное этому:
this.state = {
car: {
id: ''
},
};
Но проблема в данных, вам нужно предоставить данные в качестве реквизитов для компонента удаления.
И затем из реквизитов извлекаются данные не из состояния.
2. Затем функция OnDelete обновляет состояние:
delete(car){
const data = this.props.data.filter(i => i.id !== car.id)
this.setState({car: data})
}
Комментарии:
1. Спасибо, я добавил это, но получаю
can't read property 'bind' of undefined
2. Потому что у вас нет определенной функции handleClick(). Можете ли вы вставить код родительского компонента в то место, где вы вызываете компонент Delete? И удалить код родительского компонента.