React手写tab切换问题
程序员文章站
2022-01-23 10:20:46
父文件import react, { usestate } from 'react';// import module1 from './module1';// import module2 from...
父文件
import react, { usestate } from 'react'; // import module1 from './module1'; // import module2 from './module2'; // import module3 from './module3'; // import module4 from './module4'; import headerttabs, { tagtype } from '@/components/task/tree/common/component/tabscontent/listcontent/headtabs'; import { divide } from 'lodash'; export default function (props: any) { const tabslist: tagtype[] = [ { name: 'xxx况' }, { name: '培育xxxxx', disabled: false }, { name: '关xxxx', disabled: false }, { name: '科xxxx', disabled: false }, { name: '人xxxx', disabled: false }, ]; const [checkedtag, setcheckedtag] = usestate(tabslist[0]) return (<div> <headerttabs tabslist={tabslist} checkedtag={checkedtag} setcheckedmenu={(tab) => setcheckedtag(tab)} /> <div classname={`pt5 px20 pb20`}> {checkedtag.name === tabslist[0].name && <div>11</div>} {checkedtag.name === tabslist[1].name && <div>22</div>} {checkedtag.name === tabslist[2].name && <div>33</div>} {checkedtag.name === tabslist[3].name && <div>44</div>} {checkedtag.name === tabslist[4].name && <div>55</div>} {/* {checkedtag.name === tabslist[0].name && <module1 />} {checkedtag.name === tabslist[1].name && <module2 />} {checkedtag.name === tabslist[2].name && <module3 />} {checkedtag.name === tabslist[3].name && <module4 />} */} </div> </div>); }
子文件
import style from './index.scss'; import react from 'react'; import { message } from 'antd'; // 标签类型 export type tagtype = { name: string, // 标签名称,唯一 disabled?: boolean // 是否禁用 } /** * 子页面 tab 栏 * @param props */ export default function(props: { tabslist: tagtype[], // 标签列表 checkedtag: tagtype, // 当前选中的标签 setcheckedmenu: (menu: tagtype) => void // 标签点击回调 }) { const {tabslist, checkedtag, setcheckedmenu} = props const setcheck = (menu: tagtype) => { if (menu.disabled) { message.warning('功能暂未开放'); return } setcheckedmenu(menu) } return (<div classname={`${style.tag_area} ${style.epidemic_area}`}> { tabslist.map((item) => ( <div classname={`${style.tag} ${checkedtag.name === item.name ? style.checked : ''} ${style.epidemic}`} key={item.name} onclick={() => setcheck(item)}> {item.name} </div> )) } </div>) }
子文件-tab样式:
.tag_area { display: flex; align-items: center; justify-content: center; margin-top: -20px; background-color: #fff; margin-bottom: 20px; @media only screen and (max-width: 768px) { & { margin-top: 10px; } } } .tag { // flex: 1; // margin: 0 15px; min-width: 130px; padding: 10px; display: flex; align-items: center; justify-content: center; background-color: #fff; height: 50px; color: #333; cursor: pointer; transition: .3s all; // box-shadow: 5px 3px 4px #999; font-size: 18px; // border-radius: 10px; border-radius: 6px 6px 0px 0px; @media only screen and (max-width: 768px) { & { font-size: 14px; margin: 0 5px; min-height: 30px; text-align: center; padding: 5px; } } &.checked { color: #fff; background-color: #1e9fff; } &:hover { color: #fff; background-color: #1e9fff; } } // 浙里防疫 四个tab样式 .epidemic_area{ justify-content: left; margin: 10px 20px; padding:10px; } .epidemic{ margin:0 10px; width: 200px; background: rgba(20, 146, 255, 0.1); border: 1px solid #1492ff; box-sizing: border-box; border-radius: 4px; height: 44px; }
到此这篇关于react手写tab切换的文章就介绍到这了,更多相关react tab切换内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
-
使用vue-router与v-if实现tab切换遇到的问题及解决方法
-
Bootstrap开发中Tab标签页切换图表显示问题的解决方法
-
Bootstrap标签页(Tab)插件切换echarts不显示问题的解决
-
React组件内事件传参实现tab切换的示例代码
-
react-router实现tab页面切换,并解决选中样式首页始终选中问题
-
使用vue-router与v-if实现tab切换遇到的问题及解决方法
-
在Bootstrap开发中解决Tab标签页切换图表显示问题
-
vant 解决tab切换插件标题样式自定义的问题
-
React实现类似淘宝tab居中切换效果的示例代码
-
关于Tab切换中嵌套Swiper移动端滑动插件,导致Swiper插件失效的问题