[英]React Redux- My action creator is not passing actions to reducer (sync)
當我單擊Home容器中的DIV時,我確認已調用set函數(我看到控制台日志),從不調用teamReducer函數。 也許應該以不同的方式使用bindActionCreators? 我如何讓動作創建者向減速器發送動作以更新聯賽商店?
// teamReducer.js
export function teamReducer(state = initialState, action){
switch (action.type) {
case 'SET_TEAM':
return {
...state,
called: true
};
default:
return state;
}
};
// reducers/index.js
import { combineReducers } from 'redux';
import { routeReducer } from 'redux-simple-router';
import { teamReducer } from './teamReducer';
const rootReducer = combineReducers({
routing: routeReducer,
league: teamReducer,
});
export default rootReducer;
// actions/setTeam.js
export function setTeam(team, position) {
console.log(team, position);
return {
type: 'SET_TEAM',
team,
position
};
}
}
// Home.js
import React, { PropTypes, Component } from 'react';
import { bindActionCreators } from 'redux';
import { connect } from 'react-redux';
import {setTeam } from '../../actions/teams';
const mapStateToProps = ({league}) => {
return {
called: league.called
};
};
const mapDispatchToProps = (dispatch) => {
return bindActionCreators({
setTeam,
}, dispatch);
};
@connect(mapStateToProps, mapDispatchToProps)
export class Home extends Component {
constructor(props) {
super(props);
}
render() {
const {set} = this.props.setTeam
return <div onClick={set} />
}
}
render
功能中的問題。 您使用解構分配錯誤。
render() {
const {set} = this.props.setTeam;
return <div onClick={set} />
}
此分配與以下代碼相同:
const set = this.props.setTeam.set;
但是setTeam
是一個函數,沒有set
屬性。 正確的代碼是:
render() {
const {setTeam} = this.props;
return <div onClick={setTeam} />
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.