実現したいこと
現在のcountやtext、onClick()関数を受け渡す方法が理解できませんでした。
題材に選んだのは、ボタンを押すと1加算されるカウンターです。
action
1export const INCREMENT = 'INCREMENT'; 2 3export function increment(count) { 4 return { type: INCREMENT, count } 5} 6
reducers
1import { combineReducers } from 'redux' 2import { INCREMENT } from './actions'; 3 4const COUNT = { 5 count: 0 6} 7 8function counts(state = COUNT, action) { 9 switch (action.type) { 10 case INCREMENT: 11 return state + 1; 12 default: 13 return state; 14 } 15} 16 17const counter = combineReducers({ 18 counts 19}); 20 21export default counter; 22
CounterContainer
1import { connect } from 'react-redux'; 2import { increment } from '../actions'; 3import Counter from '../components/Counter'; 4 5const mapStateToProps = (state) => { 6 return state; 7} 8 9const mapDispatchToProps = (dispatch) => { 10 return { 11 onClick: () => { dispatch(increment()) } 12 } 13} 14 15const CounterContainer = connect(mapStateToProps, mapDispatchToProps)(Counter); 16 17export default CounterContainer; 18
Counter
1import React from 'react'; 2 3const Counter = ({ count, onClick, text }) => ( 4 <> 5 <p>{count}</p> 6 <button 7 onClick={onClick} 8 > 9 {text} 10 </button> 11 </> 12); 13 14export default Counter; 15
追記
ContainerのmapStateToPropsを以下のようにしたら値が渡りました。
const mapStateToProps = (state) => { return { count: state.counts.count, text: 'ADD!' } }
しかし依然としてmapDispatchToProps が上手く行きません
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/04/17 00:52
2020/04/17 11:20 編集
退会済みユーザー
2020/04/17 13:06