react 组件连动效果_react 动态组件

定义的一些组件

AnalyzeMobxDevtools.tsx

function AnalyzeMobxDevtools(){

return (

AnalyzeMobxDevtoolsAnalyzeMobxDevtoolsAnalyzeMobxDevtoolsAnalyzeMobxDevtoolsAnalyzeMobxDevtools

)

}

export default AnalyzeMobxDevtools;

SyncUIStateObservable.tsx

function SyncUIStateObservable(){

return (

SyncUIStateObservableSyncUIStateObservableSyncUIStateObservableSyncUIStateObservableSyncUIStateObservable

)

}

export default SyncUIStateObservable;

归纳所有的组件到一个函数里,便于应用

代码结构

28a42ab1d2c0f39bdeca7a1a55ac5604.png

AllComponents.ts

import SyncUIStateObservable from './mobx/SyncUIStateObservable'

import AnalyzeMobxDevtools from './mobx/AnalyzeMobxDevtools'

/**

* 所有的组件 ,用于页面切换

*/

export default {

"mobx": {

2: SyncUIStateObservable,

1: AnalyzeMobxDevtools

},

"jsdesignpar":{

0:1

}

}

页面插入

app.tsx

import logo from './logo.svg';

import './App.css';

import { Layout, Menu, Breadcrumb } from 'antd';

import { UserOutlined, LaptopOutlined, NotificationOutlined } from '@ant-design/icons';

import ReactDOM from 'react-dom'

import React from 'react'

import AllComponents from './AllComponents'

const { SubMenu } = Menu;

const { Header, Content, Sider } = Layout;

function App() {

/**

* 动态插入组件

* @param com

*/

function loadComponent(e: any) {

let container = document.getElementById('container');

// 卸载之前组件

if(container) ReactDOM.unmountComponentAtNode(container)

switch (e.item.props.datatype) {

case 'mobx':

const coms = AllComponents as any

const typeComs = coms[e.item.props.datatype]

ReactDOM.render(React.createElement(typeComs[e.key]), container);

break;

default:

break;

}

}

return (

mode="inline"

defaultSelectedKeys={['1']}

defaultOpenKeys={['sub1']}

style={{ height: '100%', borderRight: 0 }}

>

} title="subnav 1">

option1option2option3option4

} title="subnav 2">

option5option6option7option8

} title="subnav 3">

option9option10option11option12

Home

List

App

className="site-layout-background"

id="container"

style={{

padding: 24,

margin: 0,

minHeight: 280,

}}

>

Content

);

}

export default App;

效果

b17a6593b26886f8acd616be2b5a21f5.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值