export default function rootReducer(state = [], action) {
console.log(action);
if(action.type === 'BUTTON_CLICK'){
return[
...state,
action.book
]
store.dispatch(state) // выкинуть отсюда.
}
return state;
}
В компоненте, используйте state, в нем храните name и author. По клику на кнопку, вам нужно вызвать ACTION. Скорее всего он вам придет из родителя-контейнера (компонента, который присоединен к store, с помощью функции connect).
Inputs переписать можно так:
export default class Inputs extends Component {
constructor(props) {
super(props)
this.onAuthorChange = this.onAuthorChange.bind(this)
this.onNameChange = this.onNameChange.bind(this)
this.takeVal = this.this.takeVal.bind(this)
this.state = {
author: '',
name: '',
}
}
onAuthorChange(e) {
this.setState({ author: e.target.value })
}
onNameChange(e) {
this.setState({ name: e.target.value })
}
takeVal() {
this.props.addItem({ // имя, под которым вы передали свой экшен в качестве пропса от родителя
author: this.state.author,
name: this.state.name,
})
}
render() {
const {author, name} = this.state
return (
<div className="app__enter">
<div className="inputs-bock">
<input onChange={this.onAuthorChange} className="inputs-book__author" placeholder="Автор" type="text" value={author}/>
<input onChange={this.onNameChange} className="inputs-book__name" placeholder="Название" type="text" value={name}/>
</div>
<div className="button-wrap">
<button onClick={this.takeVal}>Добавить книгу</button>
</div>
</div>
)
}
}
Конечно, так как код функций onAuthorChange и onNameChange одинаковый, его можно уместить (и очень просто) в одной функции...
Ваш "приконекченый родитель" может выглядеть так:
import React, { Component } from 'react'
import Inputs from '../components/Inputs'
import { connect } from 'react-redux'
import {
addItem,
} from '../../actions/UserActions'
class InputsContainer extends Component {
render() {
return <Inputs addItem={this.props.addItem} />
}
}
const mapStateToProps = (state) => ({})
const mapDispatchToProps = (dispatch) => ({
addItem: (params) => dispatch(addItem(params)),
})
export default connect(mapStateToProps, mapDispatchToProps)(InputsContainer)
p.s. доки читать нужно, поддерживаю. ДЗ: переименовать addItem в пропсах и вызвать его внутри takeVal. Сделать из 2х функций обработчиков изменений в инпутах - одну.