javascript - 扩展 redux connect() 接收到的 React 组件

标签 javascript reactjs redux react-redux

是否可以通过 Redux connect() 函数扩展正在连接的组件?例如,如果我在 form-container.js 内并且我正在使用

const FormContainer = connect(
    mapStateToProps,
    mapDispatchToProps
)(Form)

有没有办法重写一些这样的方法:

FormContainer.componentDidMount = () => ...

或者添加自定义功能?

最佳答案

您可以为此使用高阶组件。我借用了这个例子 this article

function HigherOrderComponent(WrappedComponent) {
  return class NewComponent extends React.Component {
    constructor() {
      super(props)
      this.customMethod = this.customMethod.bind(this)
    }
    customMethod() {
      console.log('You called an injected method');
    }
    render() {
      return <WrappedComponent {...this.props} customMethod={this.customMethod} />
    }
  }
}

如何使用此自定义方法:

import HigherOrderComponent from './HigherOrderComponent'

class MyComponent extends React.Component {
  constructor(props) {
    super(props)
  }
  componentDidMount() {
    this.props.customMethod()
  }
  render() {
      ...
  }
}
const MutatedComponent = HigherOrderComponent(MyComponent)
const ConnectedComponent = connect(
  mapStateToProps,
  mapDispatchToProps
)(MutatedComponent)

据我所知,你不能重写 React 组件的生命周期方法。但是您可以使用 HoC 注入(inject)方法。

关于javascript - 扩展 redux connect() 接收到的 React 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40994351/

相关文章:

javascript - 如何在 Google Gears Worker 中包含 javascript 文件(无 DOM 访问权限)

javascript - 带有 React 和 Redux 的 TransitionGroup : replace old element with animation

css - 无法删除 react 网络应用程序的边距

redux - 如何实现 Redux + 微服务互通

javascript - 如何从排除的模块(ES6)导入?

javascript - 将 JSON 数据从 Node.js 存储到 MongoDB

javascript - 如何使用 JS 将字符串替换为图像

javascript - 取消 redux saga 中除一项任务之外的所有任务

javascript - React Redux如何使用来自非React组件的操作触发容器功能

javascript - 简单的文档无法工作