Я использую Axios для вызова AJAX, и данные возвращаются undefined, а затем через несколько секунд он запускает массив. Я попробовал componentDidMount и componentWillMount. Я попытался сделать конструктор с начальным состоянием в качестве реквизита. getInitial состояние устарело, если не используется React.createClass.Ответ на вызов ajax не определен сначала
Вот мой код, что-то помогает!
действия/index.js
import axios from 'axios';
import { FETCH_STRAINS } from './types';
const ROOT_URL = `https://www.cannabisreports.com/api/v1.0/strains?sort=name&page=3`;
export function fetchStrains() {
return dispatch => {
axios.get(ROOT_URL)
.then(response => {
dispatch({
type: FETCH_STRAINS,
payload: response.data.data
})
})
.catch(error => console.log(error));
}
}
редуктора/index.js
import { FETCH_STRAINS } from '../actions/types';
import initialState from './initialState';
export default function(state = initialState.strains, action) {
switch(action.type) {
case FETCH_STRAINS:
return { ...state, strains: action.payload };
default:
return state;
}
}
app.js
import React, { Component } from 'react';
import { connect } from 'react-redux';
import * as actions from './actions';
import './App.css';
class App extends Component {
componentWillMount() {
this.props.fetchStrains();
}
render() {
return (
<div className="App">
{this.props.strains === undefined ? console.log("this is undefined") : console.log(this.props.strains)}
</div>
);
}
}
function mapStateToProps(state) {
return { strains: state.strains.strains }
}
export default connect(mapStateToProps, actions)(App);