据我了解并遵循文档,HOC 是一个函数,它接受一个组件并返回一个新组件。一个例子是 react-redux 的函数 connect:
connect(mapStateToProps, mapDispatchToProps)(MyComponent)
我使用Autosizer
fromReact-virtualized
并在其文档中找到了下一个定义:
自动调整单个孩子的宽度和高度的高阶组件。
其文档中使用的语法示例是下一个:
ReactDOM.render(
<AutoSizer>
{({height, width}) => (
<List
height={height}
rowCount={list.length}
rowHeight={20}
rowRenderer={rowRenderer}
width={width}
/>
)}
</AutoSizer>,
document.getElementById('example'),
);
不确定我是否在下面提出适当的问题,以便我了解正在发生的事情。如果不是,我请您忘记这两个问题并以不同的方式解释它。
1) 为什么 Autosizer 是 HOC?我不能说它是一个接收一个组件并以与 react-redux 中的连接相同的方式返回另一个组件的函数。
2) 在匿名函数({height, width}) => {...}
中,高度和宽度是被传递对象的属性。哪个对象以及它来自哪里?