Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >mapDispatchToProps未将actionCreators调度到所需组件

mapDispatchToProps未将actionCreators调度到所需组件
EN

Stack Overflow用户
提问于 2019-08-12 20:38:03
回答 2查看 162关注 0票数 0

我正在尝试使用mapDispatchToProps来获得动作,所有动作创建者都在某个组件中,但似乎在某个组件的道具中发生的任何事情都是未定义的,我不知道为什么……我已经检查了我的动作创建者和其他文件,但它们似乎是正确的,我对此非常确定

我已经在这里尝试了我能做的一切,但我可能遗漏了一些小东西,我非常确定它就在我提供的代码中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import React, { Component }  from 'react';
import Main from './components/MainComponent';
import { View, Platform } from 'react-native';
import { ConfigureStore } from './redux/configureStore';
import { connect, Provider } from 'react-redux';
import { fetchDishes, fetchPromos, fetchComments, fetchLeaders } from './redux/ActionCreators';

const mapDispatchToProps = (dispatch) => ({
  fetchDishes: () => dispatch(fetchDishes()),
  fetchComments: () => dispatch(fetchComments()),
  fetchPromos: () => dispatch(fetchPromos()),
  fetchLeaders: () => dispatch(fetchLeaders()),
});


 const store = ConfigureStore();

function App() {
  return (
    <Provider store = {store}>
      <Something />
    </Provider>
  );
}

class Something extends Component {

  componentDidMount() {
    this.props.fetchDishes();
    this.props.fetchComments();
    this.props.fetchPromos();
    this.props.fetchLeaders();
  }
  render() {
    return (
      <View style={{flex: 1, paddingTop: Platform.OS === 'ios' ? 0 : Expo.Constants.statusBarHeight }}>

      </View>
    );
  }
}


const mapStateToProps = state => {
  return {

  }
}


connect(mapStateToProps, mapDispatchToProps)(Something);

export default App;

我想我也应该在这里分享我的actionCreators ....

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import * as ActionTypes from './ActionTypes';
import { baseUrl } from '../shared/baseUrl';

export const fetchComments = () => (dispatch) => {
  return fetch(baseUrl + 'comments')
  .then(response => {
    if(response.ok) {
      return response;
    }
    else {
      var error = new Error('Error' + response.status + ':' + response.statusText);
      error.response = response;
      throw error;
    }
  },
  error => {
    var errMess = new Error(error.message);
    throw errMess;
  })
  .then(response => response.json())
  .then(comments => dispatch(addCommnets(comments)))
  .catch(error => dispatch(commentsFailed(error.message)))
}


export const fetchDishes = () => (dispatch) => {
  dispatch(dishesLoading());
  return fetch(baseUrl + 'dishes')
  .then(response => {
    if(response.ok) {
      return response;
    }
    else {
      var error = new Error('Error' + response.status + ':' + response.statusText);
      error.response = response;
      throw error;
    }
  },
  error => {
    var errMess = new Error(error.message);
    throw errMess;
  })
  .then(response => response.json())
  .then(dishes => dispatch(addDishes(dishes)))
  .catch(error => dispatch(dishesFailed(error.message)))
}


export const fetchPromos = () => (dispatch) => {
  dispatch(promosLoading());
  return fetch(baseUrl + 'promotions')
  .then(response => {
    if(response.ok) {
      return response;
    }
    else {
      var error = new Error('Error' + response.status + ':' + response.statusText);
      error.response = response;
      throw error;
    }
  },
  error => {
    var errMess = new Error(error.message);
    throw errMess;
  })
  .then(response => response.json())
  .then(promos => dispatch(addPromos(promos)))
  .catch(error => dispatch(promosFailed(error.message)))
}


export const fetchLeaders = () => (dispatch) => {
  dispatch(leadersLoading());
  return fetch(baseUrl + 'leaders')
  .then(response => {
    if(response.ok) {
      return response;
    }
    else {
      var error = new Error('Error' + response.status + ':' + response.statusText);
      error.response = response;
      throw error;
    }
  },
  error => {
    var errMess = new Error(error.message);
    throw errMess;
  })
  .then(response => response.json())
  .then(leaders => dispatch(addleaders(leaders)))
  .catch(error => dispatch(leadersFailed(error.message)))
}

export const leadersLoading = () => ({
  type: ActionTypes.LEADERS_LOADING
});

export const leadersFailed = (errmess) => ({
  type:ActionTypes.LEADERS_FAILED,
  payload: errmess
})

只上传了actionCreators的一部分,我认为这可能是必要的

所有的fetch函数都必须被传递,并且在某些组件中不应该出现未定义的内容。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-12 20:48:44

您正在定义一个连接的组件,但没有使用它。

下面是导入和导出的内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Something.js

// A couple of imports...

class Something extends Component {
  // ...
}

const mapDispatchToProps = (dispatch) => ({
  fetchDishes: () => dispatch(fetchDishes()),
  fetchComments: () => dispatch(fetchComments()),
  fetchPromos: () => dispatch(fetchPromos()),
  fetchLeaders: () => dispatch(fetchLeaders()),
});

export default connect(null, mapDispatchToProps)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# App.js

// A couple of imports ...
import Something from './Something'

function App() {
  return (
    <Provider store = {store}>
      <Something />
    </Provider>
  );
}

注意:由于您没有来自mapStateToProps的ay道具,您可以简单地将null作为第一个参数。

票数 2
EN

Stack Overflow用户

发布于 2019-08-12 20:49:29

您的App组件正在直接使用您的Something组件,而不是它的连接版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
...

const ConnectedSomething = connect(mapStateToProps, mapDispatchToProps(Something);

function App() {
  return (
    <Provider store={store}>
      <ConnectedSomething />
    </Provider>
  );
}

...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57467936

复制
相关文章
Redux 入门到高级教程
Redux 是 JavaScript 状态容器,提供可预测化的状态管理。 (如果你需要一个 WordPress 框架,请查看 Redux Framework。)
老马
2019/05/25
2.7K0
深入浅出redux知识
为了防止自己手动调用 store.dispatch ,一般会使用redux的这个 bindActionCreators 方法来自动绑定 dispatch 方法,用法如下。
Qiang
2019/06/12
9980
深入浅出redux知识
react全家桶包括哪些_react 自定义组件
对于现在比较流行的三大框架都有属于自己的脚手架(目前这些脚手架都是使用node编写的,并且都是基于webpack的):
全栈程序员站长
2022/11/18
5.9K0
react全家桶包括哪些_react 自定义组件
使用Redux和React-redux在React中进行状态管理
首先,我们需要使用create-react-app命令行工具安装新的react应用。
前端修罗场
2022/07/29
2.9K0
使用Redux和React-redux在React中进行状态管理
react-redux
React-Redux是Redux的官方React绑定。 它允许您的React组件从Redux存储中读取数据,并将操作分派给存储以更新数据。 它由二个重要的部分组成,一个是<Provider />组件,另一个是connect()是react-redux提供的一个柯里化的函数, 用于连接redux
_kyle
2020/08/24
9890
Redux API
​ Redux的API非常少。Redux定义了一系列的约定(contract),同时提供少量辅助函数来把这些约定整合到一起。
Cloud-Cloudys
2020/07/07
1.2K0
Redux源码解析系列(五)-- bindActionCreator
本文作者:IMWeb 黄qiong 原文出处:IMWeb社区 未经同意,禁止转载 bindActionCreator 的作用其实就是用来将一个对象,它的value是action creato
IMWeb前端团队
2018/01/08
7920
Redux源码解析系列(五)-- bindActionCreator
bindActionCreator 的作用其实就是用来将一个对象,它的value是action creators转成一个同样ke但是值变成将action creator包裹在dispatch里的函数。
IMWeb前端团队
2019/12/03
2650
React-Redux 源码分析(三) -- connect
主要的核心在于connect,下面通过一个简化版的connect来说下它的主要作用。
IMWeb前端团队
2019/12/03
1.1K0
React-Redux 源码分析(三) -- connect
React-Redux 源码分析(三) -- connect
IMWeb前端团队
2018/01/08
9410
React-Redux 源码分析(三) -- connect
React进阶(6)-react-redux的使用
image.png 前言 您将在本文当中学习到 react-redux是什么,解决什么问题 UI组件以及容器组件 react-redux中两个重要的API,Provider以及connect mapS
itclanCoder
2020/10/25
2.2K0
React进阶(6)-react-redux的使用
前言 撰文:川川 您将在本文当中学习到 react-redux是什么,解决什么问题 UI组件以及容器组件 react-redux中两个重要的API,Provider以及connect mapState
itclanCoder
2020/10/28
2K0
React进阶(6)-react-redux的使用
车载网络: OMNet++所需的组件支持
安装过程详见我的另两篇博客:Ubuntu: 安装 OMNeT++ 仿真工具、车载网络: OMNeT++安装CAN协议 。
JNingWei
2018/09/27
1.1K0
mapStateToProps,mapDispatchToProps的使用姿势
刚接触redux的时候,发现大家对mapDispatchToProps使用有几种方法,而且都跑通了,本文来介绍下,redux的mapStateToProps,mapDispatchToProps的一些使用小姿势。
IMWeb前端团队
2019/12/03
2.2K0
Redux,基础 Redux是什么?React-reduxRedux存在的问题(解决的方案)?Redux的最佳实践?Redux的实现浅析?
在系统性的学习一个东西的时候, 了解其背景、设计以及解决了什么问题都是非常必要的。
菜的黑人牙膏
2019/01/21
1.5K0
机器学习研究和开发所需的组件列表
Here is a list of components that are needed for the successful machine learning research and development, and examples of popular libraries and tools of the type:
iOSDevLog
2018/11/23
7620
【重学React】动手实现一个react-redux
react-redux 是 redux 官方 React 绑定库。它帮助我们连接UI层和数据层。本文目的不是介绍 react-redux 的使用,而是要动手实现一个简易的 react-redux,希望能够对你有所帮助。
胡哥有话说
2019/10/24
3.2K0
彻底让你理解redux
state才是真正的前端数据库,它存储着这个应用所有需要的数据。 这里拿一个简单的例子说明下,为什么说简单的例子呢,因为简单到不应该使用redux。。。 运行效果如图(学习redux这个例子被介绍烂了):
Nealyang
2019/09/29
5140
彻底让你理解redux
未将对象引用设置到对象的实例–可能出现的问题总结
1、ViewState 对象为Null。 2、DateSet 空。 3、sql语句或Datebase的原因导致DataReader空。 4、声明字符串变量时未赋空值就应用变量。 5、未用new初始化对象。 6、Session对象为空。 7、对控件赋文本值时,值不存在。 8、使用Request.QueryString()时,所获取的对象不存在,或在值为空时未赋初始值。 9、使用FindControl时,控件不存在却没有做预处理。 10、反复定义造成未将对象引用设置到对象的实例错误.
全栈程序员站长
2021/11/24
5.1K0
React总结概括
react的功能其实很单一,主要负责渲染的功能,现有的框架,比如angular是一个大而全的框架,用了angular几乎就不需要用其他工具辅助配合,但是react不一样,他只负责ui渲染,想要做好一个项目,往往需要其他库和工具的配合,比如用redux来管理数据,react-router管理路由,react已经全面拥抱es6,所以es6也得掌握,webpack就算是不会配置也要会用,要想提高性能,需要按需加载,immutable.js也得用上,还有单元测试。。。。
杨永贞
2020/08/04
1.2K0

相似问题

从mapDispatchToProps调度后导航到新组件

12

注入actionCreators相对于mapDispatchToProps有什么好处?

10

mapDispatchToProps与组件中的直接调用调度函数

32

mapDispatchToProps未将函数传递给类

17

mapDispatchToProps、调度和axios

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文