React间接实现一个动态组件逻辑

embedded/2024/10/22 12:32:38/

在开发一个浏览器插件的时候,用的plasmo框架和react支持的,里面使用react开发一个菜单功能,但是又不想使用react-router,所以就想着能不能使用一个很简单的方式做一个替代方案?那肯定是可以。

我在引入一个组件后,我想把这个组件和菜单做一个关联映射,这样当点击菜单后,就可以直接跳转到对应的组件,这才是最理想的一个方式。

所以这里我先引入组件,然后将组件和菜单做了一个映射关系:

import Debug from './first'
import Control from './control'const menus = [{key: `control`,label: `流程控制`,value: <Control />,},{key: `debug`,label: `debug`,value: <Debug />,},
]

然后将这个menus和antd的菜单项做一个渲染:

                <Menutheme="dark"mode="horizontal"defaultSelectedKeys={[menus[0].key]}items={menus}onClick={clickMenu}style={{ flex: 1, minWidth: 0 }}/>

当点击这个菜单的时候,动态修改content的值,然后将这个content渲染到页面上就可以了:

整体流程代码:

import React, { useState } from 'react'
import './index.scss'
import { Layout, Menu, theme } from 'antd'
import Debug from './first'
import Control from './control'
const { Header, Content, Footer } = Layoutconst menus = [{key: `control`,label: `流程控制`,value: <Control />,},{key: `debug`,label: `debug`,value: <Debug />,},
]// menu item
const App: React.FC = () => {const {token: { colorBgContainer, borderRadiusLG },} = theme.useToken()// dynamic show componentconst [content, setContent] = useState(<Control />)// click menu itemconst clickMenu = (item: any) => {const component = menus.find((menu) => menu.key === item.key)?.valuesetContent(component)}return (<Layout className="layout"><Header style={{ display: 'flex', alignItems: 'center' }}><div className="logoBox">1024写作助手</div><Menutheme="dark"mode="horizontal"defaultSelectedKeys={[menus[0].key]}items={menus}onClick={clickMenu}style={{ flex: 1, minWidth: 0 }}/></Header><Content style={{ padding: '0 48px' }}><divstyle={{background: colorBgContainer,height: '100%',padding: 24,borderRadius: borderRadiusLG,}}>{content}</div></Content><Footer style={{ textAlign: 'center' }}>Ant Helper ©{new Date().getFullYear()} Created by 1024小神</Footer></Layout>)
}export default App

http://www.ppmy.cn/embedded/4472.html

相关文章

面试题:Spring Cloud微服务架构下的服务发现、配置中心、负载均衡等组件介绍与配置

Spring Cloud微服务架构提供了一系列标准化的组件和服务&#xff0c;以帮助开发者更好地构建和管理分布式微服务系统。以下是对Spring Cloud中服务发现、配置中心和负载均衡三个核心组件的简介以及基本配置方式&#xff1a; ### 1. 服务发现 : 组件 : Spring Cloud Netflix…

LLM推理加速,如何解决资源限制与效率挑战

©作者|Zane 来源|神州问学 LLM加速推理&#xff0c;GPU资源破局之道。 引言 大型语言模型&#xff08;LLM&#xff09;已经在多种领域得到应用&#xff0c;其重要性不言而喻。然而&#xff0c;随着这些模型变得越来越普遍&#xff0c;对GPU资源的需求也随之激增&#xff…

REACT+PHP课程项目血泪史

PHP php??老师让用php写后端。什么&#xff1f;写惯了java、python。这个看起来像html标签语言的东西写后端是个什么鬼&#xff0c;看起来想落后几千年的原始语言&#xff08;手动滑稽&#xff09;。 大概介绍一下&#xff0c;php主要是后端语言&#xff0c;用来连接数据库…

人工智能常见的分类算法

在机器学习中&#xff0c;分类算法是用于预测数据集中实例所属类别的重要技术。本文将详细介绍七种常见的分类算法&#xff0c;包括决策树、支持向量机、朴素贝叶斯、最大熵、K最近邻算法、神经网络和深度学习&#xff0c;并提供相应的示例。 1. 决策树&#xff08;Decision T…

巧用波卡生态优势,Mythical Games 引领 Web3 游戏新航向

Polkadot 对创新、安全和治理的承诺为 Mythical Games 提供了极大的发展价值。这个链上生态不仅将支持 Mythical Games 成长发展&#xff0c;还将帮助其他 Mythos 合作伙伴来壮大建设项目。 —— Mythical Games 创始人兼首席执行官 John Linden 近期 Web3 游戏行业又有新动向&…

差速机器人模型LQR 控制仿真——路径模拟

LQR路径跟踪要求路径中带角度&#xff0c;即坐标&#xff08;x,y,yaw&#xff09;&#xff0c;而一般我们的规划出来的路径不带角度。这里通过总结相关方法&#xff0c;并提供一个案例。 将点路径拟合成一条完整的线路径算法 将点路径拟合成一条完整的线路径是一个常见的问题…

InnoDB架构:磁盘篇

InnoDB架构&#xff1a;磁盘篇 InnoDB是MySQL数据库中默认的存储引擎&#xff0c;它为数据库提供了事务安全型&#xff08;ACID兼容&#xff09;、行级锁定和外键支持等功能。InnoDB的架构设计优化了对于读取密集和写入密集型应用的性能表现&#xff0c;是一个高度优化的存储系…

Reka团队打造前沿多模态语言模型,展现卓越性能

eka&#xff0c;一家新兴的人工智能公司&#xff0c;近期推出了一系列强大的多模态语言模型 - Reka Core、Reka Flash和Reka Edge。这些模型不仅能处理和推理文本&#xff0c;还能够灵活应对图像、视频和音频等多种输入&#xff0c;在各项测试中表现出色&#xff0c;在某些指标…