У меня есть классовый компонент. Но мне нужно переделать мой компонент в функцыональний и переделать соотвественно чтобы вместо mapStateToProps and matchDispatch у меня были useSelector and useDispatch. Но я никогда не использовал useSelector and useDispatch. А в документации react-redux не очень понятный пример.
Компонент реализует очень простой функционал: Когда нажал на кнопку - число справа от кнопки увеличивается на один.
Index.js:
//action
const plusLike = index => ({
type: "PLUS_LIKE",
payload:index
});
//reducer
const reducer = (state={like:0},action) =>{
switch(action.type){
case "PLUS_LIKE":
return Object.assign({},state, {
like: action.payload
});
default:
return state
}
};
//это должен быть функциональный компонент
class App extends React.Component{
render(){
return (
<div>
<button onClick={index => this.props.onPlusLike(this.props.onLike+1)}>Like</button>
{this.props.onLike}
</div>
);
}
}
//mapStateToProps
const mapStateToProps = state => ({
onLike: state.propReducer.like
});
//matchDispatchToProps
const matchDispatchToProps = dispatch =>({
onPlusLike: index => dispatch(plusLike(index))
});
const allReducers = combineReducers({
propReducer:reducer
});
const ConnectApp = connect(
mapStateToProps,
matchDispatchToProps
)(App);
const store = createStore(allReducers);
ReactDOM.render(
<Provider store={store}>
<ConnectApp/>
</Provider>,
document.getElementById("root"));