反应身份高阶组件
React identity higher order component
如何创建标识高阶组件,即仅呈现输入组件的高阶组件?
举例说明:给定组件
const TestComponent = () => <div>TEST</div>
我希望以下内容等效:
export default TestComponent;
export default identityHOC(TestComponent);
我试过了
const identityHOC = (Component) => (props) => Component(props);
const identityHOC = (Component) => (props) => () => Component(props);
const identityHOC = (Component) => (props) => <Component {...props} />;
const identityHOC = (Component) => (props) => () => <Component {...props} />;
和其他变体,但它们不起作用。
HOC 基本上只是一个函数,当它与一个组件一起提供时,returns 另一个(或相同的,如果你想的话)组件。
试试这个
import React from 'react';
const identityHOC = (WrappedComponent) => {
class HOC extends React.Component {
constructor(props){
super(props)
}
render() {
return <WrappedComponent {...this.props}/>;
}
}
return HOC;
};
如果你想把它写成功能组件,
import react from 'React'
const identityHOC = (WrappedComponent) => props =>
(<WrappedComponent {...props}/>)
您可能忘记导入 React。
实现 HOC(从 Vinay Chandran 的回答扩展)。
只渲染组件:
HOC
定义HOC函数。它应该 return 带有签名的东西 (props) => < Component>
import react from 'React'
const wrapWithHOC = (WrappedComponent) => props =>
(<WrappedComponent {...props}/>)
基础组件
const BaseComponent = () => (
<div>TEST</div>
);
const WrappedComponent = wrapWithHOC(BaseComponent)
在应用程序中使用
<App>
<WrappedComponent />
</App>
注入道具
HOC
import react from 'React'
const wrapWithHOC = (WrappedComponent) => props =>
(<WrappedComponent externalProp="ExternalProp Example" {...props}/>)
基础组件
const BaseComponent = ({ internalProp, externalProp}) => (
<div>
internal prop is: {internalProp}
external prop is: {externalProp || 'Not Wrapped'}
</div>
);
const WrappedComponent = wrapWithHOC(BaseComponent)
在应用程序中使用
<App>
<WrappedComponent internalProp="This is a standard prop" />
</App>
如何创建标识高阶组件,即仅呈现输入组件的高阶组件?
举例说明:给定组件
const TestComponent = () => <div>TEST</div>
我希望以下内容等效:
export default TestComponent;
export default identityHOC(TestComponent);
我试过了
const identityHOC = (Component) => (props) => Component(props);
const identityHOC = (Component) => (props) => () => Component(props);
const identityHOC = (Component) => (props) => <Component {...props} />;
const identityHOC = (Component) => (props) => () => <Component {...props} />;
和其他变体,但它们不起作用。
HOC 基本上只是一个函数,当它与一个组件一起提供时,returns 另一个(或相同的,如果你想的话)组件。
试试这个
import React from 'react';
const identityHOC = (WrappedComponent) => {
class HOC extends React.Component {
constructor(props){
super(props)
}
render() {
return <WrappedComponent {...this.props}/>;
}
}
return HOC;
};
如果你想把它写成功能组件,
import react from 'React'
const identityHOC = (WrappedComponent) => props =>
(<WrappedComponent {...props}/>)
您可能忘记导入 React。
实现 HOC(从 Vinay Chandran 的回答扩展)。
只渲染组件:
HOC
定义HOC函数。它应该 return 带有签名的东西 (props) => < Component>
import react from 'React'
const wrapWithHOC = (WrappedComponent) => props =>
(<WrappedComponent {...props}/>)
基础组件
const BaseComponent = () => (
<div>TEST</div>
);
const WrappedComponent = wrapWithHOC(BaseComponent)
在应用程序中使用
<App>
<WrappedComponent />
</App>
注入道具
HOC
import react from 'React'
const wrapWithHOC = (WrappedComponent) => props =>
(<WrappedComponent externalProp="ExternalProp Example" {...props}/>)
基础组件
const BaseComponent = ({ internalProp, externalProp}) => (
<div>
internal prop is: {internalProp}
external prop is: {externalProp || 'Not Wrapped'}
</div>
);
const WrappedComponent = wrapWithHOC(BaseComponent)
在应用程序中使用
<App>
<WrappedComponent internalProp="This is a standard prop" />
</App>