javascript - 如何在 React 组件中注入(inject)通用代码

标签 javascript reactjs

对于多个React组件,我想向React的生命周期注入(inject)公共(public)代码。
有什么好的办法吗?

var ComponentA = React.createClass({
    componentWillMount: function () {

    },
    componentDidUpdate: function(){
      //inject common code
    },...

var ComponentB = React.createClass({
    componentWillMount: function () {

    },
    componentDidUpdate: function(){
      //inject common code
    },...

最佳答案

您的意思是只是在多个组件之间共享功能吗?如果是这样,您可以将它们保存在一个单独的文件中,然后将它们导入到您需要的位置:

// common js

function hello() {
  console.log('hello');
}

module.exports = hello;

// your component
var hello = require('./common');

var ComponentA = React.createClass({
    componentDidUpdate: function(){
      hello();
    },//...

http://www.webpackbin.com/Nk80m1x_W

<小时/>

您可以做的另一件事是创建一个包装器(高阶)组件:

var WrapperComponent = React.createClass({
  componentDidUpdate: function() {
     // code you want to inject.
  },
  render: function () {
    return(<div>{this.props.children}</div>);
  }
});

然后,每当您需要使用具有该生命周期的组件时,您都可以在 jsx 中执行此操作:

<WrapperComponent>
   <ComponentA />
</WrapperComponent>

关于javascript - 如何在 React 组件中注入(inject)通用代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38581588/

相关文章:

javascript - 从 React fetch 调用组件方法

javascript - MxGraph 中节点、边和 Canvas 的自定义(不同)右键菜单

javascript - 规避本地文件系统上的 Chrome Access-control-allow-origin?

javascript - 不注入(inject) "data-turbolinks": false

javascript - Phantomjs 死于高内存消耗

reactjs - 选择建议后如何关闭 vscode 添加自动补全 "={}"

javascript - FCC 番茄时钟未通过内置测试

javascript - 如何在浏览器中设置 MochaJS 全局超时

reactjs - 如何在 React Native 中显示一次屏幕?

javascript - 异常管理器.js :84 Unhandled JS Exception: ReferenceError: response is not defined