最好看的新闻,最实用的信息
06月03日 9.5°C-14.8°C
澳元 : 人民币=4.83
布里斯班
今日澳洲app下载
登录 注册

React动态加载组件.真

2021-09-04 来源: 网易 原文链接 评论0条

React的动态组件的实现,很多都是使用if else,好的使用三元表达式,再好点的使用switch case,但是随着的更多组件的引入,首先import的文件会越来越多,其次就是switch case的判断分支也会越来越多,作为一个有追求的程序员大叔,这绝对是不能忍的。

之前使用Vue的时候Component :is非常好用,然后我的思路就定格在这上面了,解决发现并没有很好的API直接使用,经过半天的调研,最终把方案定格在webpack的require.content上,不废话直接上代码。

React动态加载组件.真 - 1

* 组件动态化核心方案* author: carry* update: 2021/08/11 14:40const files = require.context("./", true, /\.jsx$/);const comps = {};files.keys().forEach((key) => {const Comp = files(key).default;const name = Comp.name && !comps[Comp.name] ? Comp.name : key.replace(/\.\/(.*?)\.jsx/, "$1");comps[name] = ;export default comps;

使用require.context可以获取指定目录下的文件,然后保存其内容到一个对象中,key使用Jsx export出来的function name,如果为空或者重复的话使用路径,这个地方命名需要严格控制,避免重复或者意义不清的情况产生。

接来下我们再看看使用的地方

React动态加载组件.真 - 2

import React from "react";import { ContextProvider } from "./reducer";import Components from "./components";const App = () => {return (["Counter", "CounterTest", "Counter1"].map((key) =>{ return Components[key]; })};export default App;

使用require.context的方案好处就是文件夹下的组件新增的时候无需手动引入,这样实现才是真正的动态,同样这个方案也可以使用router的动态化,不过下篇见啦。

我是键盘钢琴家,一个把键盘当作钢琴使用的程序员。富有节奏的键盘敲击声真是悦耳吖。

转载声明:本文为转载发布,仅代表原作者或原平台态度,不代表我方观点。今日澳洲仅提供信息发布平台,文章或有适当删改。对转载有异议和删稿要求的原著方,可联络[email protected]
今日评论 网友评论仅供其表达个人看法,并不表明网站立场。
最新评论(0)
暂无评论


Copyright Media Today Group Pty Ltd.隐私条款联系我们商务合作加入我们

电话: (02) 8999 8797

联系邮箱: [email protected] 商业合作: [email protected]网站地图

法律顾问:AHL法律 – 澳洲最大华人律师行新闻爆料:[email protected]

友情链接: 华人找房 到家 今日支付Umall今日优选