mag*_*agi 0 javascript reactjs react-hooks
关于我的后续问题:如何使用反应挂钩将数据从子组件传递到父组件, 我还有另一个问题。下面是组件结构
export const Parent: React.FC<Props> = (props) => {
const [disabled, setDisabled] = React.useState(false);
const createContent = (): JSX.Element => {
return (
<Authorization>
{<ErrorPanel message={errorMessage} setDisabled={setDisabled}/>}
<MyChildComponent/>
</<Authorization>
);
}
return (
<Button onClick={onSubmit} disabled={disabled}>My Button</Button>
{createContent()}
);
};
const Authorization: React.FC<Props> = (props) => {
const [disabled, setDisabled] = React.useState(false);
const render = (errorMessage : JSX.Element): JSX.Element => {
return (
<>
{<ErrorPanel message={errorMessage} setDisabled={setDisabled}/>}
</>
);
};
return (
<>
<PageLoader
queryResult={apiQuery}
renderPage={render}
/>
{props.children}
</>
);
};
Run Code Online (Sandbox Code Playgroud)
如何将禁用状态值从授权组件传递给我的孩子,该值由
{props.children}
我尝试过 React.cloneElement 和 React.createContext 调用,但我无法将禁用的值获取到MyChildComponent. 一旦通过授权组件true设置了 errorMessage,我就可以看到禁用的值。ErrorPanel我需要加入React.useEffect授权组件吗?
我在这里缺少什么?
您需要将React.ChildrenAPI 与以下内容一起使用React.cloneElement:
const Authorization = ({ children }) => {
const [disabled, setDisabled] = React.useState(false);
const render = (errorMessage) => {
return (
<>{<ErrorPanel message={errorMessage} setDisabled={setDisabled} />}</>
);
};
return (
<>
<PageLoader queryResult={apiQuery} renderPage={render} />
{React.Children.map(children, (child) =>
React.cloneElement(child, { disabled })
)}
</>
);
};
// |
// v
// It will inject `disabled` prop to every component's child:
<>
<ErrorPanel
disabled={disabled}
message={errorMessage}
setDisabled={setDisabled}
/>
<MyChildComponent disabled={disabled} />
</>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10989 次 |
| 最近记录: |