react使用hook封装一个tab组件

这篇具有很好参考价值的文章主要介绍了react使用hook封装一个tab组件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

react使用hook封装一个tab组件

Tabbar.jsx

import PropsTypes from "prop-types";
import React, { useEffect, useState } from 'react';
export default function Tabbar(props) {
  const {  tabData , current } = props
  const [currentTab,setCurrentTab] = useState('test')
    const tabchange = (item) => {
      setCurrentTab(item.key)
    }
    useEffect(()=>{
      setCurrentTab(current)
    },[current])
    return (
        <div style={{display: 'flex',justifyContent: 'space-around',alignItems: 'center'}}>
          {
            tabData.map(item=>{
              return (
                <div
                  style={{
                    flex:'1',textAlign:'center',marginRight:'5px',cursor:'pointer',
                    color: item.key === currentTab ? 'red' : '#000',
                    background: item.key === currentTab ? '#ccc' : '#eee',
                  }}
                  key={item.key}
                  onClick={ () => tabchange(item) }
                >
                  { item.name }
                </div>
              )
            })
          }
        </div>
    )
}

Tabbar.propTypes = {
  current:  PropsTypes.oneOfType([PropsTypes.string, PropsTypes.number]),
  tabData: PropsTypes.array.isRequired
};
Tabbar.defaultProps = {
  tabData: [
    {
      name:'测试1',
      key:'test1'
    },
    {
      name:'测试2',
      key:'test2'
    },
  ],
  current:''
};

使用组件

import React from 'react';
import Tabbar from "../tabbar/Tabbar";
export default function App(props) {
  const tabData = [
    {
      name:'篮球',
      key:'1'
    },
    {
      name:'足球',
      key:'2'
    },
    {
      name:'排球',
      key:'3'
    }
  ]
  const current = '2'

    return (
        <div className='content'>
          <Tabbar tabData={tabData} current={current} ></Tabbar>
          <div style={{marginBottom: '10px'}}></div>
          <Tabbar></Tabbar>
        </div>
    )
}

效果

react使用hook封装一个tab组件,react组件,react.js,javascript,前端文章来源地址https://www.toymoban.com/news/detail-700390.html

到了这里,关于react使用hook封装一个tab组件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • React 通过一个输入内容加入列表案例熟悉 Hook 基本使用

    我们创建一个react项目 在src下创建components文件夹 在下面创建一个index.jsx index.jsx 参考代码如下 首先 我们通过一个比较典型的方法定义了一个用于声明表单元素绑定响应式数据的的函数useInputValue 接收一个参数 用于做响应式数据的默认值 然后暴露他的value 同时 绑定了一个o

    2024年02月09日
    浏览(47)
  • 记录--封装一个通过js调用的全局vue组件

    在使用vue项目编写的时候,不可避免的会碰到需要时js api来调用组件进行显示的情况 例如饿了么element ui 的 Notification 通知、Message 消息提示等组件 虽然已经提供了,但是由于api的限制,我们只能通过特定的参数来有限的改变组件的样式 之前的文章说过可以使用 new Vue() 、

    2024年02月09日
    浏览(58)
  • React Hook入门小案例 在函数式组件中使用state响应式数据

    Hook是react 16.8 新增的特性 是希望在不编写 class的情况下 去操作state和其他react特性 Hook的话 就不建议大家使用class的形式了 当然也可以用 这个他只是不推荐 我们还是先创建一个普通的react项目 我们之前写一个react组件可以这样写 简单说 就是声明一个类对象 然后在里面 写组

    2024年02月09日
    浏览(53)
  • 【React hooks】useDebounce的封装

    自定义钩子 useDebounce 返回一个debounceValue,这个值会在delay后改变,这样用到它的地方的依赖,也会有这样的效果 param变了,debouncedParam 不会立即改变,这样就达到了防抖的效果 useEffect里的函数每次执行之前,都会清除掉上一次的effect,即执行上一次effect里return的函数 具体实

    2024年02月16日
    浏览(38)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(四)

    ahooks是一款由阿里巴巴开发团队设计的React Hooks库,提供了一系列实用的React Hooks,以便开发者更好地使用React的功能。ahooks的设计原则是“最小API,最大自由”,旨在提供最小的、最易于理解和使用的API,同时保留最大的使用自由度。 使用npm或yarn安装ahooks: API介绍合集:

    2024年02月11日
    浏览(35)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(二)

    ahooks是一款由阿里巴巴开发团队设计的React Hooks库,提供了一系列实用的React Hooks,以便开发者更好地使用React的功能。ahooks的设计原则是“最小API,最大自由”,旨在提供最小的、最易于理解和使用的API,同时保留最大的使用自由度。 使用npm或yarn安装ahooks: 前面的API:aho

    2024年02月12日
    浏览(30)
  • ahooks.js:一款强大的React Hooks库及其API使用教程(一)

    ahooks是一款由阿里巴巴开发团队设计的React Hooks库,提供了一系列实用的React Hooks,以便开发者更好地使用React的功能。ahooks的设计原则是“最小API,最大自由”,旨在提供最小的、最易于理解和使用的API,同时保留最大的使用自由度。 使用npm或yarn安装ahooks: 1. useRequest useR

    2024年02月12日
    浏览(32)
  • 使用taro或react框架的,针对微信小程序隐私协议的组件封装,网上找了很久都没有相关模版,只有自己写了一个,现分享给有困难的同伴

    注意:我是使用hooks的,其他可以参考封装思路大同小异的 首先写一个PrivacyAgreement.js文件 样式文件index.scss如下 在需要用到隐私协议的组件或者api的页面里面引用

    2024年02月05日
    浏览(52)
  • Tab切换以及倒计时组件封装

    功能 支持默认选中tab 子元素可以是文本或者图片 自定义tab的数量,并自适应展示 实现方式 用ul li标签遍历传入的tabs数组参数渲染 判断是否传入背景,未传则显示文字 绑定点击事件 特点 简单易用 可适配性 功能 常用于榜单或者活动结束倒计时、或者开始倒计时、从而提高

    2024年02月09日
    浏览(42)
  • 前端实现简单的sse封装(React hook Vue3)

    所谓的SSE(Sever-Sent Event),就是浏览器向服务器发送了一个HTTP请求,保持长连接,服务器不断单向地向浏览器推送“信息”,这么做是为了节省网络资源,不用一直发请求,建立新连接。 优点:SSE和WebSocket相比,最大的优势是便利,服务端不需要第三方组件,开发难度低,SSE和

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包