Я использую React with Redux и следую учебнику, но я не могу на всю жизнь понять эту ошибку.mapDispatchToProps не помещает мою функцию в реквизит
Uncaught TypeError: this.props.fetchPosts is not a function
У меня есть файл исходного кода с действиями/index.js и у меня есть компоненты/файл posts_index.js. Насколько я могу судить, это только два файла, участвующих в этой ошибке, и я не верю, что mapDispatchToProps фактически ставит мою функцию в this.props, но я не знаю почему.
компоненты/posts_index.js
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { bindActionCreators } from 'redux';
import fetchPosts from '../actions/index';
class PostsIndex extends Component {
componentWillMount() {
this.props.fetchPosts();
}
render() {
return(
<div>List of Blog Posts</div>
)
}
}
function mapDispatchToProps (dispatch) {
return bindActionCreators({ fetchPosts }, dispatch);
}
export default connect(null, mapDispatchToProps)(PostsIndex);
действия/index.js
import axios from 'axios';
export const FETCH_POSTS = 'FETCH_POSTS';
const ROOT_URL = 'http://reduxblog.herokuapp.com/api';
const API_KEY = '?key=hn8y9e7yhvjkw9w887';
export function fetchPosts() {
const request = axios.get(`${ROOT_URL}/posts${API_KEY}`);
return {
type: FETCH_POSTS,
payload: request
}
}
Любая помощь очень ценится!
Это сделал это! Спасибо. Я немного смущен, так как я назвал import {fetchPosts} из ..., не должен ли он найти fetchPosts? – Sam
Когда вы используете функцию по умолчанию для функции, она знает, что импортировать, поэтому в скобках не нужно. –