无法读取未定义的属性'dispatch'。应对

时间:2017-02-21 13:18:12

标签: reactjs react-redux

以下是我正在使用的代码。我收到的错误如Uncaught TypeError: Cannot read property 'dispatch' of undefined。我还想dispatch采取行动。

import { connect } from 'react-redux'
let SearchBar = ({ dispatch }) => {
    let input
    return (
       <div>
           <form>
              <input type="text" placeholder="Search"  />
              <p>
                 <input type="checkbox" />
                 {' '}
                 Free
              </p>                
           </form>
       </div>
   )
}

SearchBar = connect()(SearchBar)
export default SearchBar()

3 个答案:

答案 0 :(得分:1)

我立即通过您的代码示例注意了几件事:

首先,connect函数需要第一个括号中的一些参数,即使该参数是null,我也认为你不需要导出行上的括号。尝试使用以下内容替换最后两行:

export default connect(null)(SearchBar);

看看是否有任何区别。

答案 1 :(得分:1)

你正确地从dispatch传递和撤回connect。如果connect没有任何参数,则只返回dispatch

但问题在于导出组件的方式

export default SearchBar();

在SearchBar之后你不需要()还有一件事。为清楚起见,您可以使用其他名称,例如

var search = connect()(SearchBar)
export default search;

或者您可以像

一样执行此操作
export default connect()(SearcBar);

后者是与前者相同的简写。

答案 2 :(得分:0)

我们也可以在连接中添加mapStateToProps。

const mapStateToProps = state => ({
  uData: state
});

export default connect(mapStateToProps)(App);

我们不需要在connect()中给出null。

我相信它可能对你们有些帮助。