前端组件库——NativeBase知识点大全(二)

简介: 教程来源 http://uklgy.cn NativeBase 提供近40个高质量跨平台组件,涵盖Box、Text、Stack、Input、Button、Modal、Toast、Avatar等核心类别,并支持通过`extendTheme`深度定制主题、颜色与组件样式,助力高效构建一致、可访问的移动及Web应用。

三、核心组件体系

NativeBase提供了近40个高质量的组件,以下是开发中最常用的核心组件分类。

3.1 基础组件
3.1.1 Box容器组件
Box是最基础的布局组件,类似于div,支持所有布局属性:

import { Box, Text } from 'native-base';

function Card() {
  return (
    <Box 
      bg="primary.500" 
      p={4} 
      rounded="lg" 
      shadow={2}
    >
      <Text color="white">卡片内容</Text>
    </Box>
  );
}

3.1.2 Text文本组件
Text用于显示文本内容,支持字体、颜色、对齐等样式控制:

<Text 
  fontSize="xl" 
  fontWeight="bold" 
  color="coolGray.800"
  textAlign="center"
>
  标题文本
</Text>

3.2 布局组件
3.2.1 Stack堆栈布局
Stack是管理子元素间距的强大工具:

import { Stack, Button } from 'native-base';

function ButtonGroup() {
  return (
    <Stack space={4} direction="row">
      <Button>取消</Button>
      <Button colorScheme="blue">确认</Button>
    </Stack>
  );
}

3.2.2 HStack/VStack
HStack(水平堆栈)和VStack(垂直堆栈)是Stack的便捷变体:

import { HStack, VStack, Avatar, Text } from 'native-base';

function UserInfo() {
  return (
    <HStack space={3} alignItems="center">
      <Avatar source={
  { uri: 'https://...' }} />
      <VStack space={1}>
        <Text fontWeight="bold">张三</Text>
        <Text fontSize="sm" color="gray.500">产品经理</Text>
      </VStack>
    </HStack>
  );
}

3.3 表单组件
3.3.1 Input输入框
Input组件支持多种类型和状态:

import { Input, FormControl } from 'native-base';

function LoginForm() {
  return (
    <FormControl isRequired>
      <FormControl.Label>邮箱</FormControl.Label>
      <Input 
        placeholder="请输入邮箱" 
        keyboardType="email-address"
        onChangeText={handleEmailChange}
      />
      <FormControl.ErrorMessage>
        请输入有效的邮箱地址
      </FormControl.ErrorMessage>
    </FormControl>
  );
}

3.3.2 Button按钮
Button是用户交互的核心组件:

<Button 
  colorScheme="blue" 
  size="lg"
  isLoading={isLoading}
  onPress={handlePress}
>
  登录
</Button>

3.4 反馈组件
3.4.1 Modal模态框

import { Modal, Button } from 'native-base';

function ConfirmDialog({ isOpen, onClose }) {
  return (
    <Modal isOpen={isOpen} onClose={onClose}>
      <Modal.Content>
        <Modal.CloseButton />
        <Modal.Header>确认操作</Modal.Header>
        <Modal.Body>
          确定要执行此操作吗?此操作不可撤销。
        </Modal.Body>
        <Modal.Footer>
          <Button.Group space={2}>
            <Button variant="ghost" onPress={onClose}>取消</Button>
            <Button onPress={handleConfirm}>确定</Button>
          </Button.Group>
        </Modal.Footer>
      </Modal.Content>
    </Modal>
  );
}

3.4.2 Toast提示

import { useToast, Button } from 'native-base';

function ToastExample() {
  const toast = useToast();

  const showToast = () => {
    toast.show({
      title: "操作成功",
      description: "数据已保存",
      duration: 3000,
      placement: "top"
    });
  };

  return <Button onPress={showToast}>显示提示</Button>;
}

3.5 数据展示组件
3.5.1 Avatar头像

<Avatar 
  source={
  { uri: 'https://example.com/avatar.jpg' }} 
  size="lg"
>
  <Avatar.Badge bg="green.500" />
</Avatar>

3.5.2 Badge徽章

<Badge colorScheme="danger" variant="solid">
  热门
</Badge>

四、主题定制

4.1 主题定制原理
NativeBase的主题定制是通过extendTheme函数实现的。该函数允许你深度定制组件的样式和行为,是NativeBase最强大的特性之一。

4.2 使用extendTheme定制组件
NativeBase的extendTheme函数是其自定义能力的核心。通过它,你可以覆盖全局的颜色、字体、间距等设计令牌(Design Tokens),也可以针对特定组件进行精细调整。

定制Button组件示例:

import { NativeBaseProvider, extendTheme } from 'native-base';

const theme = extendTheme({
  components: {
    Button: {
      // 1. 设置默认属性
      defaultProps: {
        colorScheme: 'red'
      },
      // 2. 覆盖基础样式
      baseStyle: {
        rounded: 'md'
      },
      // 3. 添加新的变体
      variants: {
        rounded: ({ colorScheme }) => ({
          bg: `${colorScheme}.500`,
          rounded: 'full'
        })
      }
    },
    Heading: {
      // baseStyle也可以是一个函数,动态访问主题工具
      baseStyle: ({ colorMode }) => ({
        color: colorMode === 'dark' ? 'red.300' : 'blue.300',
        fontWeight: 'normal'
      })
    }
  }
});

function App() {
  return (
    <NativeBaseProvider theme={theme}>
      {/* 应用内容 */}
    </NativeBaseProvider>
  );
}

在上面的代码中,我们通过baseStyle定义了组件的默认样式,通过defaultProps设置了默认属性值,还通过variants创建了一个名为rounded的新按钮变体。使用时只需< Button variant="rounded">即可。

4.3 baseStyle与defaultProps的区别
理解这两个概念是深度定制NativeBase的关键:
image.png
4.4 调色板系统
NativeBase的调色板是其主题系统的核心。NativeBase v3预定义了许多颜色令牌,如emerald.400、coolGray.600、violet.500等。

600是主题色,其它值(如400、700)表示该主题色的深度值,数字越大颜色越深。

你可以在extendTheme的colors属性中定义自己的颜色系统。

const theme = extendTheme({
  colors: {
    brand: {
      50: '#eff6ff',
      500: '#3b82f6',
      900: '#1e3a8a'
    }
  }
});

// 使用时
<Button colorScheme="brand">品牌按钮</Button>

来源:
https://tmywi.cn

相关文章
|
4天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
|
22天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34915 57
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
16天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
15068 44
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
11天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
2944 28
|
1天前
|
云安全 人工智能 安全
|
1月前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
45866 160
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
7天前
|
弹性计算 人工智能 自然语言处理
阿里云Qwen3.6全新开源,三步完成专有版部署!
Qwen3.6是阿里云全新MoE架构大模型系列,稀疏激活显著降低推理成本,兼顾顶尖性能与高性价比;支持多规格、FP8量化、原生Agent及100+语言,开箱即用。

热门文章

最新文章

下一篇
开通oss服务