当前位置: 首页 > 知识库问答 >
问题:

React-Redux调度程序不工作

督翰学
2023-03-14

我有这些文件,不知怎么的,当我分派一些东西时,它总是返回reducer的默认大小写。

这是我第一次使用Redux/Thunk,我正在学习本教程:https://www.youtube.com/watch?v=nrg7zhgjd4w,当他使用它时,它起作用了。

请看一下我的代码:

反应组分:

import React, { Component } from 'react';
import './App.css';
import Request from 'request';
import { connect } from 'react-redux'

import * as OperationsActions from './actions/operationsReducerActions'

//import { Content, FilterSelect, ListItem, Searchbar, Sidebar} from './components/index.js'

function mapStateToProps(state){
  return {
    operations : state.operations
  }
}

class App extends Component {
  constructor(props){
    super(props);   
  }
  componentDidMount(){
    this.props.dispatch( OperationsActions.getOperations() );
  }
  render() {
    console.log(this.props)
    return(
      <div>{this.props.operations.operations[0].text}</div>
    )   
  }
}

export default connect(mapStateToProps)(App)

操作文件:

import Request from 'request';

export function getOperations(){
        Request('http://localhost:8000/client/REQUEST_OPERATIONS', (error, response, data) => {
            if(!error){
                return {type : 'FETCH_OPERATIONS_SUCCES', payload : data};
            }
            else {
                return {type : 'FETCH_OPERATIONS_REJECTED', payload : error}
            }
    });
}

减速器:

 export default function    reducer(state={
        operations : [{
            text : '',
            reqArgument : '',
            filters : [],
            url : ''
        }],
        fetching : false,
        fetched : false,
        error : null
    }, action) {

        switch(action.type){
            case 'FETCH_OPERATIONS':{
                return {...state, fetching : true }
            }
            case 'FETCH_OPERATIONS_REJECTED':{
                return {...state, fetching : false, error : action.payload}
            }
            case 'FETCH_OPERATIONS_SUCCES':{
                return {...state, fetched : true, fetching : false, operations : action.payload }
            }
            default : {
                return {...state}
            }
        }
    }

和我的商店:

从“redux”导入{applyMiddleware,createStore}

    import logger from 'redux-logger'
    import thunk from 'redux-thunk'
    import promise from 'redux-promise-middleware'

    import reducer from './reducers'

    const middleware = applyMiddleware(promise, thunk, logger)

    export default createStore(reducer, middleware)

共有1个答案

堵才哲
2023-03-14
class App extends Component {
  ...
  componentDidMount(){
    this.props.dispatch(OperationsActions.getOperations());
  }
  ...
}

调用OperationsActions.getOperations()将返回undefined-它不显式返回任何东西。因此,还原器将接收undefined作为其action参数。然后开关将运行其默认情况。

您的getoperations操作应转换为thunk。这里有一个例子:

function getOperationsThunk() {
   return function (dispatch) {
     Request('http://foo.bar', (err, data) => {
       if (err) { dispatch(errorAction(err)); }
       else { dispatch(successAction(data)); }
     });
   };
}

errorActionsuccessAction函数将从异步请求接收数据,并创建要调度的action对象。

  • 还原-修改文档
 类似资料:
  • 我正在尝试将redux实现到一个相对简单的应用程序中,但是我的操作似乎没有正确地触发reducer。通过控制台日志记录,操作似乎正在启动,但相应的reducer没有被执行。 app.js: reducers/index.js: riskreducer.js js(RootStack中使用redux的子组件): 编辑:我已经将reducer中的初始值更改为一个适当的对象,但是在调用该操作之后,我的r

  • 我想通过Redux传递一个组件并在另一个组件中显示它。我在做这样的事情: ComponentToDispatch.js

  • 我一辈子都不能让我的一个动作叫减速机。我已经在这个应用程序中编写了多个其他动作和减法器,效果非常好。 它是筛选函数的开始。我有一个文本输入字段,在这里我不断跟踪输入字段的状态,并将字段值分配给redux操作。我有一个控制台。记录操作内部,该操作会正确记录每次按键。 我似乎不能理解的是,为什么减速器不是在每个按键调用。我已经尝试了减速器内的多个console.log,但是没有一个被键盘记录下来。 第

  • 我已经在Heroku Free Tier上部署了Spring Boot Rest Api后端。该应用程序有一个计划的方法,应该每天下午12点运行一次。我知道Heroku自由层Dyno在30分钟不活动后睡觉。因此,除非dyno处于活动状态,否则特定的方法不会运行。我已经确认,当Dyno处于活动状态时,该方法按照它应该的方式运行。我做了一点研究,在这里找到了一些相关的答案: https://stack

  • 我正在使用React Redux进行我的第一个项目,当我尝试在componentDidMount部分中分派函数时,遇到了一些问题。我试图在文档中遵循Reddit API示例项目,但由于它们使用JavaScript,我使用的是TypeScript,所以并非所有内容都是一样的。 这是我试图实现这一点的React组件: 我在行中收到以下错误: 如果存在任何不确定性,可在此处找到该项目:https://g

  • 问题内容: 在redux中,当调度一个动作时,reducer将相应地更改状态,调用该动作的组件也可以访问该状态(由Provider通过props传递)。我对吗? 状态是访问组件中操作结果的唯一方法吗?(已调用操作的组件)。 如何将回调函数传递给操作,然后使用该方法将结果发送回组件? 问题答案: 在redux中,当调度一个动作时,reducer将相应地更改状态,调用该动作的组件也可以访问该状态(由P