为什么 `mapStateToProps` 总是一个匿名函数?

Why is `mapStateToProps` always an anonymous function?

在将 React 与 Redux 结合使用的 official documentation 中,文档似乎总是将 mapStateToProps 定义为分配给变量的匿名箭头函数:

const mapStateToProps = (state, ownProps) => {
  return {
    active: ownProps.filter === state.visibilityFilter
  }
}

这似乎也是 mapDispatchToProps 的使用模式以及在文档和社区中传递给 connect 的其他函数。

这样定义似乎更简单,而且按照传统用法,这样定义:

function mapStateToProps(state, ownProps) {
  return {
    active: ownProps.filter === state.visibilityFilter
  }
}

为什么要这样做?这有实际原因吗,还是只是偏好?使用标准函数定义是否令人不悦?

没有特别的原因,这只是编写文档时使用的样式。随意将 mapState 函数编写为箭头或标准函数声明,独立声明或内联声明。两种方式都没有区别。

不过真的是匿名的吗?

const mapStateToProps = (state, ownProps) => {
  return {
    active: ownProps.filter === state.visibilityFilter
  }
}
console.log(mapStateToProps.name)

更多信息:

出于所有意图和目的,mapStateToProps 将在堆栈跟踪中显示正确的名称,而不是 <anonymous function>