bindActionCreators个州的Redux份文件:

bindActionCreators的唯一使用 case 是,当您想将一些动作创建者传递给一个不知道Redux的组件,并且不想将dispatch或Redux store传递给它时.

如果使用/需要bindActionCreators个,会是什么样的例子?

哪种组件不知道Redux

两种 Select 的优缺点是什么?

//actionCreator
import * as actionCreators from './actionCreators'

function mapStateToProps(state) {
  return {
    posts: state.posts,
    comments: state.comments
  }
}

function mapDispatchToProps(dispatch) {
  return bindActionCreators(actionCreators, dispatch)
}

vs

function mapStateToProps(state) {
  return {
    posts: state.posts,
    comments: state.comments
  }
}

function mapDispatchToProps(dispatch) {
  return {
    someCallback: (postId, index) => {
      dispatch({
        type: 'REMOVE_COMMENT',
        postId,
        index
      })
    }
  }
}

推荐答案

我不认为最流行的答案实际上解决了这个问题.

下面的所有示例基本上都做相同的事情,并且遵循无"预绑定"的概念.

// option 1
const mapDispatchToProps = (dispatch) => ({
  action: () => dispatch(action())
})


// option 2
const mapDispatchToProps = (dispatch) => ({
  action: bindActionCreators(action, dispatch)
})


// option 3
const mapDispatchToProps = {
  action: action
}

选项#3只是选项#1的简写,所以真正的问题是为什么要使用选项#1和选项#2.我已经在react-redux代码库中看到了这两种方法,我发现这相当令人困惑.

我认为困惑来自这样一个事实,即react-redux个文档中的examples个都使用bindActionCreators,而bindActionCreators个文档(如问题本身所引用的)表示不要将其与react redux一起使用.

我想答案是代码库中的一致性,但我个人更喜欢在需要时将操作显式地包装在dispatch中.

Reactjs相关问答推荐

如何使用next.js以DOM为目标在映射中使用Ref

如何将Redux工具包添加到expo (SDK 50)项目?

从Microsoft Excel粘贴复制的单元格时,将Excel单元格格式(粗体、下划线、斜体)带入Reaction

ReactJs;Reaction-Hook-Form:仅当 Select 了特定 Select 列表选项时才显示文本输入

Redux工具包-useSelector如何通过Reducer引用InitialState?

如何在REACTIVE js中动态添加或删除输入字段?

在Reaction中的第一次装载时,Use Effect返回空数组

GitHub页面未正确显示Reaction应用程序网站

svg每条路径上的波浪动画

状态更改是否卸载功能组件

在 React 中,为什么不将组件和钩子结合起来呢?

React js拖放图像并预览

在 Next13 中将 props 传递给 onClick 从服务器到客户端组件

React - 拖放 UML

使用 React Router v6 监听来自不同组件的组件状态变化

如何制作基于对象 struct 呈现数据的可重用组件?

如何在 React 中单击鼠标的位置动态添加 div?

如何在 Cypress E2E 的站点上测试react 组件?

使用 useRef(uuid()) 的目的是什么?

如何实现两个 SVG 形状相互叠加的 XOR 操作?