当前位置:首页 > React

react如何多模板

2026-01-24 04:33:45React

在React中实现多模板功能

React中实现多模板通常涉及动态渲染不同的布局或组件结构。可以通过条件渲染、高阶组件或路由配置实现。

使用条件渲染

根据状态或属性选择不同的模板组件:

const TemplateA = () => <div>模板A内容</div>;
const TemplateB = () => <div>模板B内容</div>;

function App() {
  const [currentTemplate, setTemplate] = useState('A');

  return (
    <div>
      {currentTemplate === 'A' ? <TemplateA /> : <TemplateB />}
      <button onClick={() => setTemplate('B')}>切换模板</button>
    </div>
  );
}

通过路由配置不同模板

使用React Router为不同路由指定不同布局:

import { BrowserRouter as Router, Route } from 'react-router-dom';

const MainLayout = ({ children }) => (
  <div className="main-layout">
    <header>主布局</header>
    {children}
  </div>
);

const AdminLayout = ({ children }) => (
  <div className="admin-layout">
    <header>管理布局</header>
    {children}
  </div>
);

const LayoutRoute = ({ component: Component, layout: Layout, ...rest }) => (
  <Route {...rest} render={(props) => (
    <Layout>
      <Component {...props} />
    </Layout>
  )} />
);

function App() {
  return (
    <Router>
      <LayoutRoute path="/" exact layout={MainLayout} component={HomePage} />
      <LayoutRoute path="/admin" layout={AdminLayout} component={AdminPage} />
    </Router>
  );
}

使用高阶组件包装模板

创建可复用的模板高阶组件:

const withTemplate = (WrappedComponent, Template) => {
  return (props) => (
    <Template>
      <WrappedComponent {...props} />
    </Template>
  );
};

const Page1 = () => <div>页面1内容</div>;
const Page2 = () => <div>页面2内容</div>;

const Page1WithTemplateA = withTemplate(Page1, TemplateA);
const Page2WithTemplateB = withTemplate(Page2, TemplateB);

通过上下文提供模板选择

使用React Context全局管理模板选择:

const TemplateContext = React.createContext();

const TemplateProvider = ({ children }) => {
  const [template, setTemplate] = useState('A');

  return (
    <TemplateContext.Provider value={{ template, setTemplate }}>
      {children}
    </TemplateContext.Provider>
  );
};

const TemplateSwitcher = () => {
  const { template, setTemplate } = useContext(TemplateContext);

  return (
    <select value={template} onChange={(e) => setTemplate(e.target.value)}>
      <option value="A">模板A</option>
      <option value="B">模板B</option>
    </select>
  );
};

动态导入模板组件

结合React.lazy实现模板按需加载:

const TemplateA = React.lazy(() => import('./TemplateA'));
const TemplateB = React.lazy(() => import('./TemplateB'));

function App() {
  const [template, setTemplate] = useState('A');

  return (
    <Suspense fallback={<div>加载中...</div>}>
      {template === 'A' ? <TemplateA /> : <TemplateB />}
    </Suspense>
  );
}

react如何多模板

标签: 多模react
分享给朋友:

相关文章

react如何开发组件

react如何开发组件

React 组件开发基础 React 组件分为函数组件和类组件两种形式。函数组件是现代 React 开发的主流方式,结合 Hooks 可以实现完整功能。 函数组件示例: function Gr…

如何选购react

如何选购react

选购 React 相关产品或服务的建议 React 是一个用于构建用户界面的 JavaScript 库,广泛应用于前端开发。以下是选购 React 相关产品(如课程、书籍、工具、组件库等)的参考方法:…

react如何查

react如何查

React 查询方法 React 提供了多种查询 DOM 元素的方式,以下是几种常见的方法: 使用 ref 通过 useRef 钩子可以获取 DOM 节点的引用,适用于直接操作 DOM 的场景。…

react如何encode

react如何encode

React 中编码的实现方式 在 React 中,编码通常涉及对 URL、HTML 实体或特殊字符的处理。以下是几种常见的编码方法: 使用 encodeURIComponent 进行 URL 编码…

react如何安装

react如何安装

安装React的步骤 确保已安装Node.js(建议版本12或更高),可通过以下命令检查版本: node -v npm -v 使用Create React App快速搭建项目(推荐): npx…

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…