Redux:异步操作创建者未被调用

Shibasis Sengupta

redux-thunk用于创建异步操作,以便可以使用“提取”调用API方法。我已经将redux商店附加到我的根App组件中,如下所示:

import React, { Component } from 'react';
import {Provider} from 'react-redux';
import Grid from '../src/Components/Grid/Grid';
import rootReducer from './Reducer';
import './App.css';
import { createStore,applyMiddleware } from 'redux';
import ReduxThunk from 'redux-thunk';
import logger from 'redux-logger';

class App extends Component {
  render() {
    return (
      <Provider  store={createStore(rootReducer,{},applyMiddleware(ReduxThunk))}>
      <div className="App">
            <Grid></Grid>
      </div>
      </Provider>
    );
  }
}

export default App;

我已经定义了我的异步动作创建者,如下所示:

import config from 'react-global-configuration';
import fetch from 'cross-fetch';

export default function textChangeActionCreator(data){
    console.log('in action createor'+data)

    return  async function(dispatch){
        console.log('fetching....')
         return await fetch(data).
         then((data)=>{ 
             console.log(data);
             dispatch({type:'text_change',payload:data}) 
            }).
         catch((err)=>{console.log(err)})
        }
}

我的问题是,当我从任何组件调用上述动作创建者时,它都会被正确调用,但第二个console.log('fetching....')未显示,并且fetch()调用似乎没有发生。

我究竟做错了什么?

更新资料

这是调用动作创建者的组件代码:

class Grid extends React.PureComponent{

constructor(props)
{
    super(props);
    this.state={dynamicButtonText:'',seachText:''}
    this.updateDynamicText=this.updateDynamicText.bind(this);      
    this.onTextChanged=this.onTextChanged.bind(this);
    this.updateSearchText=this.updateSearchText.bind(this);
}

onTextChanged()
{
    textChangeActionCreator(searchURL);
}

 render()
  {....}
}
const mapStateToProps=(state)=>{return state;}

export default connect(mapStateToProps,{textChangeActionCreator})(Grid);
达克里·丹尼

这通常是由错误的操作调用引起的。确保您既要调用textChangeActionCreator()动作创建者,又要将结果传递到要传递给dispatch()propsToDispatch对象中connect()

export default connect(mapStateToProps, dispatch => {

    /* Call textChangeActionCreator() and pass the result to dispatch() */
    return {
         textChange : (data) => dispatch(textChangeActionCreator(data))
    }
})(YourComponent);

更新资料

只是查看您的代码,似乎您是onTextChanged()直接从中调用动作创建者您需要通过组件props这样调用它

onTextChanged()
{
    this.props.textChangeActionCreator(searchURL);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在表单提交时调用异步redux操作创建者

期望分配或函数调用 Redux 操作创建者

Redux-Thunk-异步操作创建者Promise和Chaining不起作用

用玩笑测试 redux 异步动作创建者

如何按顺序调用异步动作创建者?

与将常规函数用作异步操作创建者相比,在redux中使用thunk中间件有什么好处?

等待异步操作创建者更新另一个操作创建者内部的状态

等待动作创建者完成后再调用其他动作创建者-Redux thunk

Redux-如何从另一个动作创建者内部调用动作创建者?

.forEach 中的异步操作创建者在运行单元测试时不返回操作

为什么要将Redux操作创建者返回的操作放在括号中?

如何在 redux 中开玩笑地模拟异步动作创建者

如何测试使用setTimeout调用另一个动作的异步动作创建者

将配置传递给Redux操作创建者的正确方法

当多个有效负载时,react / redux操作创建者返回未定义的

在React中,是否可以从实用程序函数内部访问Redux操作创建者?

在动作创建者中的 Axios 请求之后调用 Redux 中间件刷新令牌

如何使用react-redux在功能组件中调用动作创建者?

Redux:从另一个动作创建者调用一个动作

Redux动作创建者在另一个内部调用

解决动作创建者中的异步功能

无法从动作创建者内部调度异步动作

使用Redux挂钩时是否需要动作创建者?

在动作创建者中使用状态来反应redux

Redux Thunk 动作创建者不分派获取 api

Redux动作创建者中的依赖注入

如何从Redux动作创建者/ Thunk分发多个动作

如何为简单的redux动作创建者返回承诺?

如何从动作创建者访问Redux Store?