当前位置: 首页 > 面试题库 >

什么时候会在react / redux中使用bindActionCreators?

符国安
2023-03-14
问题内容

__用于 bindActionCreators的
Redux 文档指出:

唯一的用例bindActionCreators是,当您要将某些操作创建者传递给一个不了解Redux的组件,并且您不想将调度或Redux存储传递给该组件时。

在哪里bindActionCreators使用/需要一个示例?

哪种组件不知道 Redux

两种选择的优点/缺点是什么?

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

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

function mapDispatchToProps(dispatch) {
  return bindActionCreators(actionCreators, dispatch)
}
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
}

Option #3只是option的简写#1,所以真正的问题是为什么要使用option #1vs option
#2。我已经看到他们两个都在react-redux代码库中使用,并且我发现它相当混乱。

我认为混淆来自以下事实:文档中的所有示例都react- redux使用,bindActionCreators而bindActionCreators的文档
(如问题本身所引用)说不要将其与react-redux一起使用。

我想答案是代码库中的一致性,但是我个人更喜欢在需要时在 分派中 显式地包装动作。



 类似资料:
  • 问题内容: React16.3.0已发布,并且ContextAPI不再是实验功能。DanAbramov(Redux的创建者)对此发表了很好的评论,但是Context仍然是实验性功能已经有两年了。 我的问题是,根据您的看法/经验,何时应该在 React Redux上* 使用 React Context ,反之亦然? * 问题答案: 由于 Context 不再是实验性功能,您可以直接在应用程序中使用C

  • 问题内容: 我一直在学习Redux,尚不清楚的部分是,如何确定使用React State与Redux Store之间的关系,然后分派动作。从到目前为止的阅读来看,看起来我可以使用React状态代替Redux存储,并且仍然可以完成工作。我了解使用Redux存储的关注点分离,只有一个容器组件,其余的作为无状态组件,但是我对如何确定何时使用React state Vs redux存储的决定不清楚。有人可

  • 问题内容: 奇怪的是: 似乎或多或少被定义为。通过这种方式很容易产生错误: 一些fname意外地以else块结尾。修复很简单,我们应该改用它,但是从表面上看,这似乎是一种不错的pythonic方式,并且比“正确”的方式更具可读性。 由于字符串是不可变的,所以为什么字符串错误是什么技术细节?什么时候进行身份检查更好,什么时候进行平等检查更好? 问题答案: 据我所知,检查对象身份是否相等。由于没有强制

  • 问题内容: 我有一个将客户发送到另一个站点来处理付款的应用程序。客户之外的另一个站点在我们的服务器上调用一个页面,让我们知道付款的状态。被调用页面会检查付款应用程序提供的参数,并检查我们是否知道该交易。然后,它更新数据库以反映状态。这一切都无需与客户进行任何互动即可完成。 我个人选择将此功能实现为JSP,因为将文件拖放到文件系统中比编译和打包文件然后将条目添加到配置文件中要容易得多。 考虑到页面的

  • 问题内容: 我目前正在学习React,并且试图弄清楚如何与Redux一起使用它来构建移动应用程序。我对两者如何关联/一起使用感到困惑。例如,我在React https://www.raywenderlich.com/99473/introducing-react-native-building-apps- javascript中 完成了本教程,但现在我想尝试在该应用中添加一些reducers /

  • 问题内容: 我怎么能说: 为什么函数调用中不需要括号,而最后一行呢? 问题答案: 是一个功能 调用该函数并产生该函数返回的任何值。 setTimeout的目的是在一段时间后运行代码。你需要的功能只是传递给它(这样的setTimeout可以自称在适当的时候函数),因为如果你将它传递给setTimeout的前调用的函数(用括号),将执行 现在 而不是1秒后,。