React

元素传递

当某个状态定义域及元素判断条件在顶层,但渲染元素在较深子层时,可以不将 setDispatch,条件state 传递,直接在顶层生成 元素,将元素进行传递:

  1. const Root = () => {
  2. const [state, setState] = useState();
  3. const elm = state === 'xxxx' && (
  4. <Jsx setState={setState} />
  5. )
  6. }
  7. React.cloneElement(elm, {
  8. props,
  9. })

后续有中间层的状态插入,使用 React.cloneElement 即可。
一般的通用组件外定义内部渲染元素也是使用的类似的方式。以及内部插值的同时,保留外部的逻辑。

  1. React.cloneElement(elm, {
  2. onChange: (...params) => {
  3. if (elm.props.onChange) elm.props.onChange(...params);
  4. ...
  5. },
  6. });

cloneElement #react_pattern