我正在尝试为孩子们配置一些道具。
在这个虚拟示例中,我正在测试该函数,以便使用以下属性专门针对任何嵌套或未嵌套的子对象:swipeMe。
div如果在 my on the里面render function它只包含一个孩子,它工作得很好,就像这样:
<SwapableItems>
<div>
{/*the p element will get the red color as defined on childrenHandler*/}
<p swipeMe>Add Props</p>
</div>
</SwapableItems>
然而,如果我在我的中添加更多的孩子div
,不知何故我猜我的三元操作childrenHandler
效果不佳,我不知道为什么......
如果它有孩子,克隆这个元素并调用childrenHandler
传递它的孩子。
如果它有我想要的道具,克隆元素并用它做点什么。
如果以上都不是,则只需克隆该元素。
return childHasChildren ? React.cloneElement(child, {}, childHasChildren) : child.props.swipeMe ? React.cloneElement(child, { ...swipeMeProps }) : React.cloneElement(child, {});
import React from "react";
import ReactDOM from "react-dom";
function App() {
return (
<SwapableItems>
<div>
<p swipeMe>Add Props</p>
<div>Don't Add Props</div>
</div>
</SwapableItems>
);
}
function SwapableItems({ children }) {
const content = childrenHandler(children, { style: { color: "red" } });
return content;
}
const childrenHandler = (children, swipeMeProps) => {
const childEls = React.Children.toArray(children).map((child) => {
const childHasChildren =
child.props.children && React.isValidElement(child.props.children)
? childrenHandler(child.props.children, swipeMeProps)
: undefined;
return childHasChildren
? React.cloneElement(child, {}, childHasChildren)
: child.props.swipeMe
? React.cloneElement(child, { ...swipeMeProps })
: React.cloneElement(child, {});
});
return childEls;
};
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
小怪兽爱吃肉
呼唤远方
九州编程
相关分类