首页 > 解决方案 > 在应用程序组件中添加类或钩子

问题描述

我是反应世界的新手,在反应站点中它说钩子不能在类内使用,我的问题是例如我有 app.js 我可以在里面有基于类和功能(钩子)的组件吗?例如,在这个 App.js 中,“NavBar”可以是功能性(挂钩)组件,“页面”可以是类组件,还是可以在其中包含类/挂钩组件?

const store = configureStore({});


const Loader = () => (
  <div className="App">
    <div>loading...</div>
  </div>
);

const theme = createMuiTheme({
  palette: {
    primary: yellow
    secondary: black
    action: {
      selected: orange[600],
    },
  },
  status: {
    danger: 'ooooo',
  },
});

const TranslatedApp = () => {
    const { t } = useTranslation();
    return (
        
        <Provider store={store}>
            <ConnectedRouter history={hist}>
                <NavBar siteName={t('siteN')} />
                <Page />
            </ConnectedRouter>
        </Provider>
    
    );
};
const SuspendedApp = withTranslation()(TranslatedApp);
const App = () => (
    <Suspense fallback={<Loader />}>
        <SuspendedApp />
    </Suspense>
)

const wrapper = document.getElementById("app");
wrapper ? ReactDOM.render(<App />, wrapper) : null;
 

标签: javascripthtmlreactjstypescriptreact-hooks

解决方案


是的你可以。对子组件必须是父组件的类型没有限制。当您将其声明为函数式或类时,您唯一的限制是在组件内。Class Components和Functional Components都有自己的优势,都应该根据自己的Component做什么来使用(不过需要注意的是16.8.0版本以后,Class组件在那个版本之前的大部分特性都可以可以使用功能挂钩来完成,但是在某些情况下,类组件可能更好地满足您的目的,例如在处理动态 DOM 时)。


推荐阅读