Привет!
как повесить toggle (close/open) при клике на кнопку, так чтобы открывался только нужный элемент списка для редактирования?
вот мой код :
Родительский компонент Customers.js
есть state при клике они меняются
class Customers extends Component{
constructor() {
super();
this.state = {
customers: sampleCustomers,
openCL: false,
className: 'opened'
};
this.openClose= this.openClose.bind(this);
this.addCustomers = this.addCustomers.bind(this);
openClose(key){
const customers = {...this.state.customers};
this.setState({ openCL: !this.state.openCL});
const className = this.state.openCL ? 'opened ': "closed";
this.setState({
customers: customers,
className: className });
}
render(){
const { customers }=this.state ;
return(
<div className="product-block ">
<h3>List of customers</h3>
<div className="product-table-block ">
<table>
<thead>
</thead>
<tbody>
{
Object
.keys(customers)
.map(key => <Customer key={key} details={ customers[key] } />)
}
</tbody>
</table>
</div>
<ListCustomers
addCustomers={this.addCustomers}
className={this.state.className}
openClose={this.openClose}
/>
</div>
Дочерний компонент ListCustomers.js
Передаю через props state родительского компонента.
При клике на кнопку открываются все таблицы для редактирования и ,собственно, закрываются все при повторном клике на кнопку.
А я хочу чтобы открывалась та таблица, на кнопку которой нажал {key}
class ListCustomers extends Component{
constructor(){
super();
}
renderList(key){
const customer = this.props.customers[key];
const className = this.props.className;
return(
<div>
<button onClick={()=>this.props.openClose(key)}>Edit id{customer.id}</button>
<div className={className} key={key}>
<input name="id"
value={customer.id}
placeholder="Id"
onChange={(e)=>{this.handlerChanges(e,key)}}
type="text" />
......код......
</div>
</div>