用同一文件中的另一个组件包装React组件
Wrap React component with another component in the same file
我有一个Button
和Hovered
组件。悬停组件保存状态和鼠标悬停事件,并将hovered
道具传递给其子级。该按钮为普通按钮。
我希望能够访问悬停值作为按钮上的道具,但我不想在我使用的任何地方都用悬停来包装按钮。
有没有办法将Button组件封装在同一个Button.jsx
文件中,这样我就可以将Hovered依赖项保留在一个位置,但仍然可以传递道具
您基本上想要用这样的东西包装组件:
//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();
}
}
相关文章:
- 如何在react js中将值从一个组件发送到另一个组件
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- Angular2将组件方法导入到另一个组件中
- 如何在另一个组件中获取指令/组件实例
- 无法将react组件作为属性传递给另一个组件
- 在React中将方法从一个组件移动到另一个组件,并且仍然可以在原始组件中使用
- 在另一个文件夹中显示React组件
- 如何从一个组件访问另一个组件的状态
- Vue.js从另一个组件获取数据
- Angular 2:在另一个组件上定义一个路由器,而不是引导的
- Angular2 如何使用 Javascript XMLHttpRequest 重定向到另一个组件
- (反应)如何在另一个组件中包含多个组件
- 如何在单文件组件中扩展另一个 VueJS 组件?(ES6 vue-loader)
- Vue.js 在另一个组件的一个组件中使用变量
- 在 React 中渲染一个组件中的另一个组件
- Vue.js 从另一个组件调用方法
- 反应如何更新另一个组件的状态
- 从另一个 ExtJS 自定义框架扩展组件
- 根据 Angular 2 中另一个组件中单击的内容更新一个组件中的数据
- React渲染一个组件,然后单击另一个React组件