0.1.2 • Published 5 months ago

@cniot/rn-ticket-book-card v0.1.2

Weekly downloads
-
License
MIT
Repository
-
Last release
5 months ago

React Native 火车票卡片组件 - RNTrainTicketCard

一个高度可定制的 React Native 火车票卡片组件,支持多种形态展示,并内置国际化支持。

特性

  • 🎨 两种预设形态(默认卡片和带标题卡片)
  • 🌐 内置国际化支持(英语、中文、日语、意大利语)
  • 🎯 完全类型化的 TypeScript 支持
  • 🔄 支持自定义标签和样式
  • 📱 适配各种屏幕尺寸
  • 🎨 支持渐变背景色

安装

# 使用 npm
npm install @cniot/rn-ticket-book-card

# 使用 yarn
yarn add @cniot/rn-ticket-book-card

必要依赖

本组件库依赖以下基础包,这些包通常在 React Native 项目中已经存在:

  • react (>=18.0.0)
  • react-native (>=0.71.0)
  • expo (>=44.0.0)
  • expo-linear-gradient (>=14.0.0)
  • react-native-dashed-line (>=1.0.0)

使用方法

基本用法

import React from 'react';
import { View } from 'react-native';
import { RNTrainTicketCard } from '@cniot/rn-ticket-book-card';

const MyComponent = () => {
  return (
    <View style={{ padding: 10 }}>
      <RNTrainTicketCard 
        departureTime="17:10" 
        arrivalTime="22:07" 
        departureStation="Milano Centrale" 
        arrivalStation="Venezia Mestre" 
        duration="4h 57m"
        tagConfigs={[
          { content: "高铁", backgroundColor: "#003D78", textColor: "#FFFFFF" },
          { content: "G101", backgroundColor: "#8E44AD", textColor: "#FFFFFF" }
        ]}
      />
    </View>
  );
};

export default MyComponent;

带标题卡片(可用)

<RNTrainTicketCard 
  departureTime="18:10" 
  arrivalTime="23:07" 
  departureStation="Milano Centrale" 
  arrivalStation="Venezia Mestre" 
  duration="4h 57m"
  tagConfigs={[
    { content: "高铁", backgroundColor: "#003D78", textColor: "#FFFFFF" },
    { content: "G101", backgroundColor: "#8E44AD", textColor: "#FFFFFF" }
  ]}
  hasTitle={true}
  isDisabled={false}
  titleText="Free ticket"
  titleDescription="Reservable"
/>

带标题卡片(禁用)

<RNTrainTicketCard 
  departureTime="18:10" 
  arrivalTime="23:07" 
  departureStation="Milano Centrale" 
  arrivalStation="Venezia Mestre" 
  duration="4h 57m"
  tagConfigs={[
    { content: "高铁", backgroundColor: "#003D78", textColor: "#FFFFFF" },
    { content: "G101", backgroundColor: "#8E44AD", textColor: "#FFFFFF" }
  ]}
  hasTitle={true}
  isDisabled={true}
  titleText="Free ticket"
  titleDescription="Not reservable"
/>

自定义样式

<RNTrainTicketCard 
  departureTime="17:10" 
  arrivalTime="22:07" 
  departureStation="Milano Centrale" 
  arrivalStation="Venezia Mestre" 
  duration="4h 57m"
  tagConfigs={[
    { content: "高铁", backgroundColor: "#003D78", textColor: "#FFFFFF" },
    { content: "G101", backgroundColor: "#8E44AD", textColor: "#FFFFFF" }
  ]}
  containerStyle={{ borderColor: '#4682b4' }}
  timeStyle={{ color: '#4682b4', fontSize: 20 }}
  stationStyle={{ color: '#708090', fontSize: 14 }}
  hasShadow={false}
  hasRoundedCorners={true}
/>

国际化支持

本组件内置了国际化支持,可以与业务项目中的 i18next 集成使用。组件内部包含英语、中文、日语和意大利语的基本翻译。

与业务项目的 i18next 集成

组件会自动检测并使用业务项目中注入的 i18next 实例。如果业务项目中已经设置了 i18next,组件将使用业务项目的翻译资源,同时业务项目的翻译会覆盖组件内部的翻译。

// 业务项目中的 i18next 配置
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';

i18n
  .use(initReactI18next)
  .init({
    resources: {
      en: {
        translation: {
          trainTicketCard: {
            train: '列车', // 这将覆盖组件内部的翻译
            // 其他翻译...
          }
        }
      },
      // 其他语言...
    },
    lng: 'zh',
    fallbackLng: 'en',
  });

// 将 i18next 实例暴露给全局,以便组件可以访问
window.i18next = i18n; // 在 Web 环境
global.i18next = i18n; // 在 React Native 环境
global.i18nextLng = 'zh'; // 设置当前语言

API 参考

RNTrainTicketCard Props

属性类型默认值描述
departureTimestring-出发时间
arrivalTimestring-到达时间
departureStationstring-出发站点
arrivalStationstring-到达站点
durationstring-行程时长
hasTitlebooleanfalse是否为带标题卡片
isDisabledbooleanfalse是否禁用(仅当hasTitle为true时有效)
titleTextstring-自定义标题文本
titleDescriptionstring-标题描述文本
headerTitlestring-卡片内容标题
tagConfigsTagConfig[]-标签配置列表
containerStyleStyleProp-卡片容器的附加样式
hasShadowbooleantrue是否显示阴影
hasRoundedCornersbooleantrue是否显示圆角
timeStyleStyleProp-时间文本的附加样式
stationStyleStyleProp-站点文本的附加样式
tagStyleStyleProp-标签的附加样式
tagTextStyleStyleProp-标签文本的附加样式
tagsReact.ReactNode[]-自定义标签内容

TagConfig 类型

属性类型必填描述
contentstring标签内容
backgroundColorstring标签背景颜色
textColorstring标签文本颜色,默认为白色

注意事项

  • hasTitletrue 时,卡片将显示标题、描述和图标
  • hasTitletrueisDisabledtrue 时,卡片将显示为禁用状态
  • 带标题卡片使用渐变背景色,需要安装 expo-linear-gradient 依赖
  • 虚线使用 react-native-dashed-line 库实现,需要安装该依赖
  • 自定义样式 containerStyletimeStyle 等将覆盖默认样式
  • 组件内置的国际化支持仅包含基本的卡片文本,如需更多翻译,请在业务项目中注入

文档

完整的文档和示例可以在以下地址查看:

所有组件文档网站 模板组件文档网址

许可证

MIT

0.1.2

5 months ago

0.1.1

5 months ago

0.1.0

5 months ago