Redux-thunk发送不起作用

10 reactjs redux redux-thunk react-redux

我正在寻找thunk并试图弄清楚如何实现api调用.它没有用,所以我回到了基础.当我点击它'Getting here!在控制台中显示的按钮时,但是当我没有显示任何内容时console.log(dispatch).我在这里错过了什么吗?

import React from 'react';
import ReactDOM from 'react-dom';
import { createStore, applyMiddleware } from 'redux';
import { connect, Provider } from 'react-redux';
import thunk from 'redux-thunk' 
import axios from 'axis';

const store = createStore(
    reducer,
    applyMiddleware(thunk)
);

function fetchUser() {
    return axios.get('https://randomuser.me/api/');
}

function addUser() {
    console.log('Getting here');
    return (dispatch) => {
        console.log(dispatch) //not showing anything
        return fetchUser().then(function(data){
          console.log(data);
        });
    };
}

class App extends React.Component {
    addUser() {
        addUser();
    }

    render() {
        return (
           <button onClick={this.addUser.bind(this)}>+</button>
        )       
    }
}

const mapPropsToState = function(store){
    return {
        newState: store
    }
}

var ConnectApp = connect(mapPropsToState)(App);

ReactDOM.render(
    <Provider store={store}>
        <ConnectApp />
    </Provider>,
    document.getElementById('app')
)
Run Code Online (Sandbox Code Playgroud)

Ram*_*shi 16

您无法addUser()从组件中调用常规函数.您必须使用一个mapDispatchToProps函数并将其传递给您的connect调用才能发送addUser().

const mapDispatchToProps = dispatch => ({addUser: () => dispatch(addUser())})
Run Code Online (Sandbox Code Playgroud)

然后

ConnectApp = connect(mapPropsToState, mapDispatchToProps)(App);
Run Code Online (Sandbox Code Playgroud)

现在你可以把它称为道具.

addUser() {
        this.props.addUser();
    }
Run Code Online (Sandbox Code Playgroud)