React
元素传递
当某个状态定义域及元素判断条件在顶层,但渲染元素在较深子层时,可以不将 setDispatch,条件state 传递,直接在顶层生成 元素,将元素进行传递:
const Root = () => {
const [state, setState] = useState();
const elm = state === 'xxxx' && (
<Jsx setState={setState} />
)
}
React.cloneElement(elm, {
props,
})
后续有中间层的状态插入,使用 React.cloneElement 即可。
一般的通用组件外定义内部渲染元素也是使用的类似的方式。以及内部插值的同时,保留外部的逻辑。
React.cloneElement(elm, {
onChange: (...params) => {
if (elm.props.onChange) elm.props.onChange(...params);
...
},
});