Redux-Promise не работает

В настоящее время я пытаюсь выполнить обещание от axios и получить данные с помощью промежуточного программного обеспечения Redux-Promise. Я уже зарегистрировал промежуточное программное обеспечение Redux-Promise. В search_bar.js вызывается fetchWeather Action Creator. Он создает обещание axio и переходит к Редукторы. В reducer_weather.js обещание еще не выполнено. Может ли кто-нибудь помочь мне с этим?

index.js

import React from "react";
import ReactDOM from "react-dom";
import { Provider } from "react-redux";
import { createStore, applyMiddleware } from "redux";
import ReduxPromise from "redux-promise";

import App from "./components/app";
import reducers from "./reducers";

const createStoreWithMiddleware = applyMiddleware(ReduxPromise)(createStore);

ReactDOM.render(
  <Provider store = {createStoreWithMiddleware(reducers)}>
    <App />
  </Provider>,
  document.querySelector(".container")
);

редукторы / index.js

import { combineReducers } from "redux";
import WeatherReducer from "./reducer_weather";

const rootReducer = combineReducers({
  weather: WeatherReducer
});

export default rootReducer;

редукторы / reducer_weather.js

export default function(state = null, action){
console.info("Reducers");
console.info(action);
return state;
}

контейнеры / search_bar.js

    import React,{Component} from 'react';
    import {connect} from 'react-redux';
    import {bindActionCreators} from 'redux';
    import {fetchWeather} from '../actions/index';

    class SearchBar extends Component {
    constructor(props){
        super(props);

        this.state = {
            term:''
        };

        this.onInputChange = this.onInputChange.bind(this);
        this.onFormSubmit = this.onFormSubmit.bind(this);
    }

    onInputChange(e){
        this.setState({term:e.target.value});
    }

    onFormSubmit(e){
        e.preventDefault();
        this.props.fetchWeather(this.state.term);
        this.setState({term:''})
    }

    render(){
        return (
        <form className = "input-group" onSubmit = {this.onFormSubmit}>
            <input value = {this.state.term} onChange = {this.onInputChange}/>
            <span className = "input-group-btn">
                <button type = "submit" className = "btn btn-secondary">submit</button>
            </span>
        </form>
        );
    }
}

function mapDispatchToProps(dispatch){
    return bindActionCreators({fetchWeather},dispatch);
}

export default connect(null,mapDispatchToProps)(SearchBar);

действия / index.js

import { request } from "http";
import axios from 'axios';

const API_KEY = "eba56fc1ee64a90231051880ed9788d6";
const ROOT_URL = `http://api.openweathermap.org/data/2.5/forecast?appid=${API_KEY}`;

export function fetchWeather(city){

    const url = `${ROOT_URL}&q=${city},us`;
    const request = axios.get(url);

    console.info("Actions");
    console.info(request);
    return {
        type: fetchWeather,
        payload: request
    };
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
596
1

Ответы 1

Ваш код для создания хранилища redux кажется мне довольно странным. Как я настраиваю магазин:

import { createStore, applyMiddleware } from 'redux';
import promiseMiddleware from 'redux-promise';

const store = createStore(
    rootReducer,
    applyMiddleware(promiseMiddleware)
);

ReactDOM.render(
    <Provider store = {store}>
        <App />
    </Provider>,
    document.querySelector(".container")
);

Кроме того, какова реализация bindActionCreators(...)?

Я заменил свой файл app.js вашей настройкой, но обещание от axios все еще не разрешено в reducer_weather.js.

Min Htet Oo 05.06.2018 07:36

Другие вопросы по теме