Я новичок в React и Redux и в настоящее время пытаюсь получить одну историю (id, title, content, audio) из моей базы данных, используя идентификатор истории. Я настроил компонент, действие и редуктор.
Однако я сталкиваюсь со следующей ошибкой, возникающей в компоненте:
Невозможно прочитать свойство 'then' из неопределенного
getStory(id) {
> 31 | this.props.getSingleStory(id)
| ^ 32 | .then(response => {
33 | this.setState({
34 | story: response.data
Компонент подробности истории
import {getSingleStory } from '../../actions/story';
....
export class StoryDetails extends Component {
constructor(props) {
super(props);
this.getStory = this.getStory.bind(this);
this.state = {
story: {
id: null,
title: "",
content: "",
audio: ""
}
};
}
componentDidMount() {
this.getStory(this.props.match.params.id);
}
getStory(id) {
this.props.getSingleStory(id)
.then(response => {
this.setState({
story: response.data
});
console.log(response.data);
})
.catch(e => {
console.log(e);
});
}
render() {
const { story } = this.state;
return (
<Fragment>
<h2>Stories</h2>
{story.title}
{story.content}
</Fragment>
);
}
}
const mapStateToProps = state => ({
story: state.story.story
});
export default connect(
mapStateToProps,
{ getSingleStory}
)(StoryDetails);
Действие (Действие зарегистрировано в типах)
// GET SINGLE STORY
export const getSingleStory = id => (dispatch, getState) => {
axios
.get( apiBase + `/story/${id}/`, tokenConfig(getState))
.then(res => {
dispatch({
type: GET_SINGLE_STORY,
payload: res.data
});
})
.catch(err =>
dispatch(returnErrors(err.response.data, err.response.status))
);
};
Редуктор
case GET_SINGLE_STORY:
return {
...state,
story: state.story.filter(story => story.id !== action.payload)
};
Насколько я вижу, мое действие GET_SINGLE_STORY возвращает 'res.data'. Поэтому я не могу понять, почему «тогда» не определено.
Спасибо за любую подсказку!