为什么在没有mapStateToProps或mapDispatchToProps作为args的情况下调用connect函数?

the*_*ode 8 react-redux

在文档中的一个Redux示例中,调用connect函数时没有args.这可以在示例的底部看到.

import React from 'react'
import { connect } from 'react-redux'
import { addTodo } from '../actions'

let AddTodo = ({ dispatch }) => {
let input

return (
  <div>
    <form onSubmit={e => {
      e.preventDefault()
      if (!input.value.trim()) {
        return
      }
      dispatch(addTodo(input.value))
      input.value = ''
    }}>
      <input ref={node => {
        input = node
      }} />
      <button type="submit">
        Add Todo
      </button>
    </form>
  </div>
 )
}

AddTodo = connect()(AddTodo)

export default AddTodo
Run Code Online (Sandbox Code Playgroud)

根据我的理解,connect函数的目的是让容器组件以回调的形式访问动作调度程序,以及以道具的形式从商店访问状态.

因此,在没有指定要为组件提供访问权限的状态和操作创建者的情况下调用connect的原因没有意义.

azi*_*ium 9

connect()(AddTodo)dispatch作为prop 传递给AddTodo组件,即使没有状态或预定义的操作,它仍然有用.

Redux(和react-redux)是一个非常低级的库.它允许您对组件可以访问的状态和操作非常严格,或者您可以将整个存储和每个操作传递给每个组件,以及介于两者之间的所有操作.

由您决定适合您的应用程序的严格程度.

为什么要使用connect,你可能会问?好吧,connect只需通过React上下文传递存储/调度,这样您就不必通过许多组件传递存储.你不具备使用connect虽然.任何模块/ HOC模式都可以工作,connect恰好使用起来很方便.