javascript - 如何通过react-redux connect使用React.memo?

标签 javascript reactjs redux

有人知道当使用react-redux中的connect函数时如何用React.memo包装React组件吗?

例如,您将如何修改以下内容?

let Button = (props: Props) => (
  <button onClick={props.click}>{props.value}</button>
);

Button = connect(
  mapStateToProps,
  mapDispatchToProps
)(Button);

我已经尝试过:

let Button = React.memo((props: Props) => (
  <button onClick={props.click}>{props.value}</button>
));

Button = connect(
  mapStateToProps,
  mapDispatchToProps
)(Button);

但是,connect 返回的函数需要传递一个组件,因此会出现错误:

Uncaught Error: You must pass a component to the function returned by connect. Instead received {"compare":null}

最佳答案

React.memo 只是一个 HOC,所以你可以使用:

没有备注:

connect(
  mapStateToProps,
  mapDispatchToProps
)(Button);

带备注:

connect(
  mapStateToProps,
  mapDispatchToProps
)(React.memo(Button));

甚至换行连接:(这应该是连接的解决方案)

React.memo(
  connect(
    mapStateToProps,
    mapDispatchToProps
  )(Button)
);

就像我们对 withRouter 所做的那样:withRouter(connect(...)())

关于javascript - 如何通过react-redux connect使用React.memo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52998469/

相关文章:

javascript - 函数测试值范围内的值并返回值

javascript - 带 ActionCable 的回形针

Javascript - 我在哪里犯了错误?

javascript - 如何自动重新加载 chrome 扩展程序?

javascript - reactjs - 中断 superagent 中的发布请求

javascript - react redux 更新状态 onClick 函数与多个 Action

javascript - create-react-app 不适用于代理

javascript - karma 单元测试 : Module name "react" has not been loaded yet for context: _. 使用 require([])

javascript - Redux Store 和第三方数据结构

javascript - 使用组合 reducer 时无法将状态映射到 Prop