想象一下拥有一个React组件
function List() {
return (<ul>
<li>1</li>
<li>2</li>
</ul>
);
}
我想创建一个高阶组件,用于修改所有li
节点的样式。
function makeRed(component) {
return function(props) {
const element = React.createElement(component, props);
return React.cloneElement(
element,
element.props,
React.Children.map(
element.props.children,
ch => React.cloneElement(ch, {
...ch.props,
style: {
backgroundColor: "red"
}
},
ch.props.children
)
)
);
}
}
但是,这并不起作用。子组件为空。
有趣的是,如果我直接创建组件,它就可以正常工作,例如:
...
const element = <ul><li>1</li><li>2</li></ul>;
...
问题:如何访问任何React元素的子孙级元素?
List
组件,可以接受样式作为属性,并使用一个高阶组件将该属性传递给它们呢? - Hamms