想象一下有 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 元素的子孙?