- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很难理解 mapDispatchToProps
这里使用了一个 mapDispatchToProps 函数
const mapDispatchToProps = () => {
return {
addItem: addItem
};
};
那么,这里真正发生的是 addItem 函数现在可以作为 React 组件的一个 prop,对吧?
那么,为什么我们需要使用 bindActionCreators 并执行此操作
const mapDispatchToProps = (dispatch) => {
/* code change */
return bindActionCreators({
addItem: addItem
}, dispatch);
};
到底发生了什么,尤其是在这些行中
return bindActionCreators({
addItem: addItem
}, dispatch);
为什么没有 bindActionCreator 的前面的代码不能工作?
最佳答案
要“发送 Action ”(又名:调度),您需要dispatch(actionCreator())
让我们假设 addItem
是 function addItem() { return {type: 'addItem', payload: data}; };
addItem 是一个返回 Action 的函数。它是一个 actionCreator(因此:绑定(bind) actionCreator),但不分派(dispatch)它。您仍然需要调度
结果操作。
mapDispatchToProps
为您提供了 dispatch
函数,您需要用它来分派(dispatch)该操作。
这里有几个可行的例子:
const mapDispatchToProps = (dispatch) => {
return {
addItem: () => dispatch( addItem() ),
addItemInline: () => dispatch( {type: 'addItem', payload: 'data'} )
}
};
bindActionCreators
本质上就是这样做的:
const bindActionCreators = (actionCreators, dispatch) => {
let boundActionCreators = {};
return Object.keys(actionCreators).forEach(key => {
boundActionCreators[key] = () => {
dispatch( actionCreators[key]() );
};
});
return boundActionCreators;
};
或者,更详细一点:对于您传递给它的对象中的每个 actionCreator
,它都会返回一个新函数来分派(dispatch) actionCreator
的结果。
关于javascript - react mapDispatchToProps bindActionCreator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44735498/
我似乎找不到这个问题的具体答案。 如果我有一个连接的组件,并且我想从不同的 reducer 传递多个 Action : import { actions as commonActions } from
我的印象是 bindActionCreators 的目的是将 actionCreators 包装在一个调度函数中,并为这些新函数命名(可以传递给组件作为 Prop ,通过 mapDispatchToP
我很难理解 mapDispatchToProps 这里使用了一个 mapDispatchToProps 函数 const mapDispatchToProps = () => { return {
我正在阅读这篇文章,我注意到他没有使用 redux 附带的 bindActionCreators 方法,这是为什么? 我不需要吗? 这是帖子:https://medium.com/@stowball/
经过 20 个小时的测试,我不明白我错在哪里。 如果我使用 storeredux dispacth,一切都可以正常工作,但现在我将使用带有 bindActionCreators 的操作 这是我的行动
我对JavaScript和react-native还是很陌生,并且已经有需要添加功能的现有项目。它使用redux和redux-thunk和redux-saga发送API请求。当前,每个组件仅支持1个d
我正在玩 redux,我开始收到此错误,无法解决它,我希望它有任何意义,但似乎找不到任何信息..任何人都可以解释原因这可能表明?谢谢.. 代码: import React, { Component }
我试图在 github 上理解这段代码 程序员在这里使用了类似的东西 constructor(props) { super(props); this.actions = bindAc
我见过很多在 mapDispatchToProps 函数中使用 bindActionCreators 函数的示例,如下所示: ... const mapDispatchToProps = (dispa
bindActionCreators expected a function actionCreator for key 'ACCOUNT_LOGIN', instead received type
我正在尝试在 React 中创建一个产品列表,我可以在其中添加和删除产品。 我开始研究如何使用 redux 来做到这一点框架/平台和 native react 我已经有一个函数 productList
我已经按照以下方式在一个类中定义了 Redux Action 创建者: export class ActionCreator { login() { return { type
我是一名优秀的程序员,十分优秀!