如何将道具从调用组件传递给 HOC - React + Typescript

Posted

技术标签:

【中文标题】如何将道具从调用组件传递给 HOC - React + Typescript【英文标题】:How to pass props to HOC from calling component - React + Typescript 【发布时间】:2022-01-10 17:45:35 【问题描述】:

我在 index.tsx 中创建了新的 PublicClientApplication。现在我想把它传递给我的 withAuthHOC。 App.tsx 正在使用此 HOC。所以我想在 HOC 中使用 PublicClientApplication(pca 道具)。我该怎么做?

我的 AppProps.tsx:

export type AppProps = 
    pca: IPublicClientApplication
  ;

我的 index.tsx:

const msalInstance = new PublicClientApplication(msalConfig);

ReactDOM.render(
  <React.StrictMode>
    <App pca=msalInstance />
  </React.StrictMode>,
  document.getElementById('root')
);

我的 App.tsx:

  const App = (pca:AppProps) => 
  return (
      <MainRoutes />
  );


export default withAuthHOC(App);

我的 withAuthHOC.tsx:

const withAuthHOC = (WrappedComponent: React.FunctionComponent) => 
    return () => 
        useMsalRedirect();

        return (
            <MsalProvider instance=pca>
                <AuthenticatedValidation />
                <AuthenticatedTemplate>
                    <WrappedComponent />
                </AuthenticatedTemplate>
            </MsalProvider>
        );
    
;

export default withAuthHOC;

【问题讨论】:

您好,我有一个类似问题的答案,希望对您有所帮助:How to set one component's state from another component in React 【参考方案1】:

你会在 HOC 的道具上得到它

const withAuthHOC = (WrappedComponent: React.FunctionComponent) => 
    return (props) => 

        const pca = props; // get pca form props

        useMsalRedirect();

        return (
            <MsalProvider instance=pca>
                <AuthenticatedValidation />
                <AuthenticatedTemplate>
                    <WrappedComponent />
                </AuthenticatedTemplate>
            </MsalProvider>
        );
    
;

export default withAuthHOC;

【讨论】:

以上是关于如何将道具从调用组件传递给 HOC - React + Typescript的主要内容,如果未能解决你的问题,请参考以下文章

React TypeScript HoC - 将组件作为道具传递

如何将值从组件传递给道具并设置状态

如何将道具传递给 React Navigation 导航器中的组件?

React 无法将道具传递给组件

如何在 React 中将不同的道具从父组件传递给多个子组件?

如何将道具传递给 react-router 1.0 组件?