在JSX中围绕React组件封装高阶组件(HOC)
Wrapping a high order component(HOC) around a React component in JSX
我使用的是JSX风格的React,我试图访问这个onClickOutside包装器的功能,以了解用户何时点击离开。以下是其自述中的用法:
// How to install: npm install react-onclickoutside --save
// load the High Order Component:
var onClickOutside = require('react-onclickoutside');
// create a new component, wrapped by this onclickoutside HOC:
var MyComponent = onClickOutside(React.createClass({
...,
handleClickOutside: function(evt) {
// ...handling code goes here...
},
...
}));
在本例中(在JSX中),我尝试访问"点击外部"功能,但没有成功。
import React from 'react';
import OnClickOutside from 'react-onclickoutside';
export default class Menu extends React.Component {
constructor(props){
super(props);
}
render() {
return (
<OnClickOutside>
<ul>
<li>Test 1</li>
<li>Test 2</li>
<li>Test 3</li>
</ul>
</OnClickOutside>
);
}
handleClickOutside(event) {
console.log('Clicked outside.');
}
}
在这种情况下,我认为您混淆了高阶组件(HOC)和容器组件。HOC获取一个组件(在您的案例中为Menu
),然后返回一个组件。容器组件渲染其子级时。
如示例所示,onOutsideClick
组件是一个HOC。这应该适用于您的示例:
import React from 'react';
import OnClickOutside from 'react-onclickoutside';
export class Menu extends React.Component {
constructor(props){
super(props);
}
render() {
return (
<ul>
<li>Test 1</li>
<li>Test 2</li>
<li>Test 3</li>
</ul>
);
}
handleClickOutside(event) {
console.log('Clicked outside.');
}
}
export default OnOutsideClick(Menu);
相关文章:
- React重新渲染但未显示正确的组件
- 不能从angular2中的子组件指定父组件中的数组
- 拨打'父亲'函数形式a'儿童'ReactJS中的组件
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- React组件等待所需道具进行渲染
- 如何创建带有插槽的vue js组件预加载程序
- KnockoutJS-组件-多个实例
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在react js中将值从一个组件发送到另一个组件
- React Native通过Navigator将用户输入数据传递到选项卡栏IOS中的组件
- React组件-设置页面标题
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- 如何在salesforce aura闪电组件中使用jQuery.val()
- 为react组件传递道具的最佳方式
- 在JSX中围绕React组件封装高阶组件(HOC)
- 以最封装的方式封装/封装ScalaJS react js组件(react stick)
- Ember's notifyPropertyChange()不会激发封装组件的观察者
- 如何在服务器端语言组件中封装javascript
- 1.5角.如何使跨封装模板绑定到组件范围
- 将material-ui封装到定制组件中