const state = {
todos: [1, 2],
todosById: {
1: {
id: 1,
task: 'Do laundry',
completed: true,
authorId: 1
},
2: {
id: 2,
task: 'Paint fence',
completed: false,
authorId: 1
}
},
authorsById: {
1: {
id: 1,
name: 'Billy Bob',
role: 'Assistant Editor'
}
}
};
switch (action.type) {
case 'BUTTON_CLICK':
return [
...state,
{
id: [action.books.id],
item: action.books
}
];
return (
<div>
{this.props.books.map((id, index) => <Book key={index} id={id.id} />)}
</div>
)
а затем в mapState получаем нужную инфу и кладем ее в item. Там же (в mapActions) делаем onClick
id вы получаете неявно.
const addBook = (payload) => { return { type: 'BUTTON_CLICK', {
id:[payload.id]
item: payload.item
}} };
Как-то не очень понятно каким образом вы можете наверх родителю через пропсы передать. Через callback может?
this.props.addBook({
id: random.toString(),
author: this.authorInput.value,
name: this.nameInput.value,
imgUrl: this.state.imagePreviewUrl
});
<Inputs addBook={this.props.addBook} />
Вполне себе как вариант
return (
<div className='book-list clearfix'>
{this.props.book.map((el, index) =>
(el.name.length === 0 && el.author.length === 0) ? console.log(el) :
<div className="book-item" key={index} id={el.id}>
<div className="book-item__btn delete-btn" onClick={this.deleteItem}></div>
<div className="book-item__btn change-btn" onClick={this.test}></div>
<div className="book-item__img">
<img src={el.imgUrl} alt=""/>
<div className="book-item__info">
<div>{el.author}</div>
<div>{el.name }</div>
</div>
</div>
</div>
)}
</div>
)
test(e){
this.props.deleteBook({
id: e.target.parentNode.id
});
}
render() {
return (
<div className='book-list clearfix'>
<h2>Здесь будет ваш список книг!</h2>
{this.props.book.map((el, index) =>
(el.name.length === 0 && el.author.length === 0) ? console.log(el) :
<div className="book-item" key={index} id={el.id}>
<div className="book-item__delete-btn" onClick={this.test}></div>
<div className="book-item__img">
<img src={el.imgUrl} alt=""/>
<div className="book-item__info">
<div>{el.author}</div>
<div>{el.name }</div>
</div>
</div>
</div>
)}
</div>
)