【发布时间】:2019-12-19 23:39:51
【问题描述】:
下面是我的容器代码:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import { fetchMovies } from './actions';
export class Container extends Component {
componentDidMount() {
this.props.fetchMovies();
}
}
const mapStateToProps = state => {
return {
movies: state.movies,
};
};
function mapDispatchToProps(dispatch) {
return {
fetchMovies: bindActionCreators({fetchMovies}, dispatch),
};
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(Container);
行动:
export const fetchMovies = () => dispatch => {
console.log('fetchMovies called');
// const movieResponse = fetchAPI(apiUrl);
// console.log('movieResponse => ', JSON.stringify(movieResponse));
dispatch({ type: actionTypes.FETCH_MOVIES, payload: [] });
};
商店:
import { createStore, applyMiddleware } from 'redux';
import { composeWithDevTools } from 'redux-devtools-extension';
import thunk from 'redux-thunk';
import rootReducer from '../rootReducer';
const middlewares = [thunk];
const store = createStore(
rootReducer,
composeWithDevTools(applyMiddleware(...middlewares))
);
export default store;
依赖版本:
"prop-types": "^15.7.2",
"react": "^16.8.6",
"react-bootstrap": "^1.0.0-beta.11",
"react-dom": "^16.8.6",
"react-flexbox-grid": "^2.1.2",
"react-redux": "^7.1.0",
"react-router": "^5.0.1",
"react-router-dom": "^5.0.1",
"react-scripts": "3.0.1",
"redux": "^4.0.4",
"redux-actions": "^2.6.5",
"redux-promise-middleware": "^6.1.1",
"redux-thunk": "^2.3.0",
出现错误:
TypeError: this.props.fetchMovies is not a function
我正在使用 16.8 的最新反应版本。是这个原因吗?还是我在配置中遗漏了什么?
【问题讨论】:
-
试试这个
fetchMovies: bindActionCreators(fetchMovies, dispatch), -
我有相同的代码,后来更新为对象,没有运气:(
-
IIRC bindActionCreators 用调度包装了函数,所以你调度它 2 次。尝试:export const fetchMovies = () => { return { type: actionTypes.FETCH_MOVIES, payload: [] }; };
-
第二个参数只是调度,我不认为我在操作中做错了什么
-
请问还有其他答案吗?
标签: javascript reactjs redux react-redux redux-thunk