当前位置: 首页 > news >正文

找设计方案的网站互联网营销平台

找设计方案的网站,互联网营销平台,dede地方门户网站模板,郑州英语网站建设我们在项目中都写过一些可以公用的功能,今天小编教会大家,如何将这些公共的功能或组件进行封装、打包并发布在npm上去,使之成为一个可以供更多开发者使用的npm包。第一步:创建项目mkdir rc-checkbox-virtual-list 创建一个文件夹…

我们在项目中都写过一些可以公用的功能,今天小编教会大家,如何将这些公共的功能或组件进行封装、打包并发布在npm上去,使之成为一个可以供更多开发者使用的npm包。

第一步:创建项目

mkdir rc-checkbox-virtual-list 
创建一个文件夹,我的叫做rc-checkbox-virtual-list,你可以根据你自己来cd rc-checkbox-virtual-list 
进入创建好的rc-checkbox-virtual-list文件夹中npm init或npm init -y
这里主要是初始化一些基本信息
使用npm init -y是默认生成相关信息
使用npm init 需要你手动输入相关信息

最后生成一个package.json文件,大致如下:

{"name": "rc-checkbox-virtual-list","version": "1.0.0","description": "a react component","main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1",},"keywords": ["react","checkbox","list"],"author": "luanjialin","license": "ISC"
}

第二步:创建相关目录结构

在项目根目录下手动创建 src、lib、test文件夹
src: 用来存放源代码
lib: 用来存放编译后的代码,这个目录只读
test:用来存放测试代码目录

第三步:编写组件

在新建src目录中,我自己创建了一个RcCheckBoxList文件夹
里面写了一个RcCheckBoxList.js文件和RcCheckBoxList.css文件
同时在src下,我创建了一个index.js文件,用来引用并导出RcCheckBoxList.js你可以根据自己的组件实际情况来编写
下面是我的代码src/RcCheckBoxList/RcCheckBoxList.js文件
import React ,{ useState ,useEffect} from 'react';
import {Checkbox} from 'antd';
import './RcCheckBoxList.css';
import 'antd/dist/antd.css';function RcCheckBoxList(props)  {const [isCheckAll, setisCheckAll] = useState(false)const [addmanList,setaddmanList]=useState([]);const [xingmingList,setxingmingList]=useState([...props.dataSource]);useEffect(()=>{// 这里判断翻页新传递的数据和选中的数据是否存在...console.log('addmanList',addmanList);setisCheckAll(false);let data=[...props.dataSource];let num=0;let addmanlist=addmanList;data.forEach(item => {let matched = addmanlist.find(obj => obj.id === item.id);if (matched){item.checked=true;num+=1;}        });if(num==data.length){setisCheckAll(true);}setxingmingList([...data]);},[props.dataSource])function onCheckChange(e,item){let ischecked=e.target.checked;let selectId=item.id;let num=0;let xingminglist=xingmingList;xingminglist.map((item,index)=>{if(item.id==selectId){item.checked=ischecked;if(item.checked==true){setaddmanList(prev=>[...prev,item]);props.check([...addmanList,item]);}else{let array=addmanList.filter(i=>i.id!==selectId);setaddmanList([...array]);props.check([...array]);}}})setxingmingList([...xingminglist]);xingminglist.map((item,index)=>{if(item.checked==true){num+=1;}})if(num==xingminglist.length){setisCheckAll(true);}else{setisCheckAll(false);}    };function onCheckAllChange(e){let ischecked=e.target.checked;setisCheckAll(ischecked);let addmanlist=addmanList;let xingminglist=xingmingList;xingminglist.map((item,index)=>{item.checked=ischecked;})if(ischecked==true){let array = [...new Set([...xingminglist,...addmanlist].map(item => JSON.stringify(item)))].map(item => JSON.parse(item));setaddmanList(array);props.allcheck(array);}else{let array = addmanlist.filter(itemA => !xingminglist.some(itemB => itemA.id === itemB.id));setaddmanList(array);props.allcheck(array);}};return (<div className="alarmNotice2_draw_top_body"><div className="alarmNotice2_draw_top_body_header"><div className="alarmNotice2_draw_top_body_header_left"><Checkbox onChange={onCheckAllChange} checked={isCheckAll}></Checkbox><div className="alarmNotice2_draw_top_body_header_left_name">人员姓名</div></div><div className="alarmNotice2_draw_top_body_header_right">部门</div></div><div  className="alarmNotice2_draw_top_body_list">{ xingmingList.map((item,index)=>{return (<div className="alarmNotice2_draw_top_body_list_item" key={item.id}><div className="alarmNotice2_draw_top_body_list_item_left"><Checkbox  onChange={(e)=>onCheckChange(e,item)} checked={item.checked}></Checkbox><div className="alarmNotice2_draw_top_body_list_item_left_name">{item.name}</div></div><div className="alarmNotice2_draw_top_body_list_item_right">{item.department}</div></div>)})}</div></div>)
}export default RcCheckBoxList;src/RcCheckBoxList/RcCheckBoxList.css文件
.alarmNotice2_draw_top_body{width: 100%;height: calc(100% - 100px);display: flex;flex-direction: column;justify-content: flex-start;align-items: flex-start;overflow: auto;
}
.alarmNotice2_draw_top_body_header{width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;height: 50px;border-bottom: 1px solid #eee;
}
.alarmNotice2_draw_top_body_header_left{width: 49%;display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
}
.alarmNotice2_draw_top_body_header_left_name{margin-left: 10px;font-weight: 500;font-size: 14px;color: rgba(0, 0, 0, .85);
}
.alarmNotice2_draw_top_body_header_right{width: 49%;display: flex;flex-direction: row;justify-content: flex-start;align-items: center;font-size: 14px;font-weight: 500;color: rgba(0, 0, 0, .85);
}
.alarmNotice2_draw_top_body_list{width: 100%;display: flex;flex-direction: column;justify-content: flex-start;align-items:center;
}
.alarmNotice2_draw_top_body_list_item{width: 100%;display: flex;flex-direction: row;justify-content: center;align-items: center;height: 50px;border-bottom: 1px solid #efefef;
}
.alarmNotice2_draw_top_body_list_item_left{width: 49%;display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
}
.alarmNotice2_draw_top_body_list_item_left_name{margin-left: 10px;font-size: 14px;color: rgba(0, 0, 0, .85);
}
.alarmNotice2_draw_top_body_list_item_right{width: 49%;display: flex;flex-direction: row;justify-content: flex-start;align-items: center;font-size: 14px;color: rgba(0, 0, 0, .85);
}
.alarmNotice2_draw_bottom{width: 100%;height: 50px;display: flex;flex-direction: row;justify-content: flex-start;align-items:center;
}
.alarmNotice_draw_bottom_btn{margin-right: 10px;border-radius: 5px;
}src/index.js文件
import RcCheckBoxList from './RcCheckBoxList/RcCheckBoxList.js';
export {RcCheckBoxList};

对应目录结构:

第四步:babel转码 将es6变成浏览器可以读取的es5

npm install --save-dev 
babel-cli 
babel-core 
babel-loader 
babel-plugin-istanbul 
babel-preset-es2015 
babel-preset-react 
babel-preset-stage-0 
react 
react-dom
antd@4.x.x

安装好后package.json如下:

"devDependencies": {"antd": "^4.24.16","babel-cli": "^6.26.0","babel-core": "^6.26.3","babel-loader": "^10.0.0","babel-plugin-istanbul": "^7.0.0","babel-preset-es2015": "^6.24.1","babel-preset-react": "^6.24.1","babel-preset-stage-0": "^6.24.1","react": "^19.1.1","react-dom": "^19.1.1"}

第五步:修改我们的入口文件,并且修改scripts文件

"main": "./lib/index.js",
"scripts": {"clean": "rm -rf lib && mkdir lib","lib": "npm run clean && babel src --out-dir lib --copy-files"
},

修改后和上图一致

第六步:项目根目录中添加.babelrc文件

{"presets": ["es2015","stage-0","react"],"plugins": ["transform-react-jsx"]}

第七步:打包

项目根目录中运行:
npm run lib

第八步:发布至NPM

npm login
输入相关账号密码或者验证码
npm publish 
推送包到npm

http://www.dtcms.com/a/555034.html

相关文章:

  • 佛山网站优化公司排名wordpress 伪静态 403
  • POI搜索:图文教程!多种条件搜索POI数据,支持地图可视化,支持导出SHP、GEOJSON、DXF等文件格式
  • IoControlCode=20IOCTL_ICA_STACK_CONNECTION_SEND分析
  • 网站品牌高端定制设计网站公司价格
  • 青岛茶叶网站建设网站备案前置审批类型
  • 大兴做网站的公司宁波公司网页制作
  • 网站做收录全网整合营销推广方案
  • 每日两题day29
  • 百度云建站WordPresswordpress下载管理
  • API 管理平台的核心功能有哪些?企业该如何选型?
  • 快站app官网下载wordpress自动加标签
  • 崂山区建设局网站最新时事热点
  • 视频直播网站开发 设计合肥做网站的公司百度
  • 广州做网站网络公司外贸网站建设流程图
  • 网站收录下降的原因买完域名网站怎么设计
  • vscode插件开发-创建AI聊天面板
  • 广州行业门户网站建设怎样做网站运营
  • 东莞做网站公司电话wordpress多说加载慢
  • wordpress网站破解仿京东网站后台
  • 做网站建设的基本步骤趣闻网站如何做
  • 网站制作属于什么行业我国的跨境电商平台有哪些
  • 提高网站规范化建设帮忙做ppt赚钱的网站
  • JAVA1031 NUM求和
  • 2021年免费的网站有哪些网站被降权怎么办
  • 基于协同过滤算法的话剧购票系统(论文+源码)
  • 正规网站建设哪家好安徽省水利建设厅官方网站
  • zencart外贸建站网站建设联
  • 用 Python 实现连续数据分组求和并回写
  • 从0学Java--day7
  • 做ppt医学专业图片网站徐州哪里做网站