将父状态作为 prop 传递给 {children} | 内的所有组件Reactjs

问题描述 投票:0回答:1

我想授予所有

{children}
组件的访问权限以使用或修改父组件内的状态,这是代码:

父组件:

export function FormStep({ children }) {
  const [activeStep, setActiveStep] = useState(null);

  return (
    <ul
      className={
        "pointer-events-none absolute flex translate-x-[200px] flex-col justify-between gap-7 opacity-0 transition duration-200 ease-in-out"
      }
    >
      {children} //all children here need to access 'activeStep'
    </ul>
  );
}

我希望所有

{children}
组件都能访问
activeStep
状态。

通常我们可以将

activeStep
作为 prop 传递给父级的子级

像这样:

export function FormStep({ children }) {
      const [activeStep, setActiveStep] = useState(null);
    
      return (
        <ul
          className={
            "pointer-events-none absolute flex translate-x-[200px] flex-col justify-between gap-7 opacity-0 transition duration-200 ease-in-out"
          }
        >
          <Child isActive={activeStep}></Child>
        </ul>
      );
    }

我想要相同的结果,但对于

{children}
对象

reactjs react-props
1个回答
0
投票

看看 React.ChildrenReact.cloneElement

这应该可以解决问题

export function FormStep({ children }) {
  const [activeStep, setActiveStep] = useState(null);
    
  return (
    <ul
      className="pointer-events-none absolute flex translate-x-[200px] flex-col justify-between gap-7 opacity-0 transition duration-200 ease-in-out"
          }
        >    
         {React.Children.map(children, child => (
           React.cloneElement(child, { activeStep })
         ))}
        </ul>
      );
    }
© www.soinside.com 2019 - 2024. All rights reserved.