javascript - 在应用程序组件中添加类或钩子
问题描述
我是反应世界的新手,在反应站点中它说钩子不能在类内使用,我的问题是例如我有 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;
解决方案
是的你可以。对子组件必须是父组件的类型没有限制。当您将其声明为函数式或类时,您唯一的限制是在组件内。Class Components和Functional Components都有自己的优势,都应该根据自己的Component做什么来使用(不过需要注意的是16.8.0版本以后,Class组件在那个版本之前的大部分特性都可以可以使用功能挂钩来完成,但是在某些情况下,类组件可能更好地满足您的目的,例如在处理动态 DOM 时)。
推荐阅读
- reactjs - react-hook-form 自定义不受控制的输入不会更新它们的元状态(脏,触摸)
- visual-studio-code - VS:代码调试 docker 映像从 55000 开始并递增,我怎样才能使其静态?
- jquery - NetSuite Rest Web Services 查询事务和事务行表
- hadoop - 将在 docker 容器内运行的 apache 超集连接到 Kylin 的问题
- java - 从 Java 调用 Kotlin(找不到符号)
- r - R测试特定的值组是否在ID组中
- c - 有人可以告诉我的树功能有什么问题吗
- javascript - 从响应中获取值并转移到 React 中的另一个组件
- javascript - 如何在悬停时突出显示立方体面?三.js
- swift - 如何为带有可选参数的函数定义回调?