想在 content 之间插入一些内容,但是要怎么在父组件中判断子组件的渲染结果是不是 null 呢?
代码类似
https://codesandbox.io/s/k9nr4pqz9r
function LI({ show = true }) {
if (show) {
return <span>content</span>;
}
return null;
}
function UL({ children }) {
let ret = [];
React.Children.forEach(children, (child, index) => {
if (true /* how to get child render result ? */) {
ret.push(child);
ret.push(" * ");
}
});
if (ret.length) {
ret.pop();
}
return ret;
}
function App() {
return (
<>
<UL>
<LI />
<LI />
<LI />
<LI />
</UL>
<hr />
<UL>
<LI />
<LI show={false} />
<LI />
<LI />
</UL>
</>
);
}
1
lijsh 2018-11-08 14:13:02 +08:00
子组件上的 show 属性也应该来自父组件吧
|
4
azh7138m OP @lijsh render props 是父组件向子组件传入 render,和这个需求没关系,在 UL 里面还是没法知道 render 的结果。
今天翻了一下源码,在 react dom 渲染之前应该是拿不到 render 结果,react 只维护状态。 |