javascript - 将 React 组件与另一个组件包装在同一文件中

标签 javascript node.js reactjs

我有一个 ButtonHovered 组件。悬停组件保存状态和鼠标悬停事件,并将 hovered 属性传递给其子组件。该按钮是一个普通按钮。

我希望能够将悬停值作为按钮上的 Prop 来访问,但我不想在使用按钮的任何地方都用 Hovered 来包裹按钮。

有没有办法将 Button 组件包装在同一个 Button.jsx 文件中,以便我可以将 Hovered 依赖项保留在一个位置,但仍然可以传递 props?

最佳答案

你基本上想用这样的东西包装组件:

//Button.jsx

var Button = React.createClass({
    //Stuff
});

function Hoverify(Component) {
  var Hoverified = React.createClass({
    //HOVER STUFF HERE
    render() {
      return <Component {...this.props} {...this.state} />;
    }
  });
  return Hoverified;
};


module.exports = Hoverify(Button);

Hoverify 内容放入单独的文件中,以最大限度地重复使用。

或者,如果您更喜欢继承,您也可以通过 ES6/7 类执行类似的操作:

export default class Hover extends React.Component {

  constructor(){
    super();
    this.onMouseOver = this.onMouseOver.bind(this);
  }

  //hove functions and such
  onMouseOver(){
     console.log("look ma, I hovered");
  }
}

export default class Button extends Hover {
   constructor(){
     super();
   }
}

关于javascript - 将 React 组件与另一个组件包装在同一文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31254926/

相关文章:

javascript - 使用 Node.js 以编程方式启动和终止 Web 浏览器

javascript - AngularJS对Controller和rootScope的多种使用

node.js - 如何获取对象id以及如何更新

reactjs - 我如何禁用或删除警报组件

javascript - 开 Jest : Mock function have not been called in mock promise function

javascript - 向 CSS/JS 选项卡添加淡入淡出效果

javascript - 如何解压 xxx.js.tar 文件

node.js - Saisjs下载数据流

javascript - node.js ffi 导入常量

reactjs - 即使在使用 exact 之后,React Routing 仍然显示根组件