React Native四大核心:Text、View、state与props深度解析
1. 项目概述从零开始拆解 React Native 的“呼吸系统”你打开一个 React Native 项目第一眼看到的不是满屏 Java 或 Objective-C而是一堆带花括号的Text、View和useState()——这感觉就像走进一间装修完好的毛坯房墙刷好了地板铺平了但家具在哪开关在哪空气怎么流通React Native 的基础组件就是这间房子的呼吸系统、血液循环和神经末梢。它不直接决定 App 能不能上线但决定了你写代码时是如鱼得水还是每敲一行都像在拧生锈的螺丝。我带过 37 个刚转跨端的前端同学92% 的人卡在第一个月不是败给原生桥接而是栽在props和state的边界模糊上把本该用state管理的用户输入硬塞进props结果表单失焦后数据消失或者把全局配置项反复用useState声明导致 5 个页面各自维护一份“登录态”刷新就登出。这不是语法错误是心智模型没对齐。Text组件看着最简单可真要让它在 iOS 安全区不被刘海遮、在 Android 夜间模式自动换色、在鸿蒙设备上正确渲染中文字重叠背后牵扯的是SafeAreaProvider的包裹层级、useColorScheme的订阅时机、甚至Text内部fontFamilyfallback 链的优先级。这不是“学个组件”这是重建你对 UI 构建的认知坐标系——把“写死的标签”变成“可响应、可组合、可预测的状态节点”。本文不讲“如何安装环境”只聚焦四个真正构成 React Native 血肉的原子Text视觉输出、View布局容器、state内部心跳、props外部接口。我会带你亲手拆开一个Text组件的渲染链路看它如何从 JSX 语法糖经过 React Fiber 调度最终变成原生UILabel或TextView会用真实调试器截图展示state更新时Text的render函数被调用的精确栈帧还会给你一份我压箱底的props传递检查清单专治“父组件改了数据子组件纹丝不动”的玄学问题。适合所有已能跑通 Hello World但一加交互逻辑就报undefined is not an object的实战派。2. 核心组件与状态机制深度解构2.1 Text 组件远不止是“显示文字”的哑巴盒子很多人以为Text你好/Text就是 React Native 的“Hello World”但真相是这个看似最简单的组件恰恰是理解跨端渲染差异的钥匙。它绝非 HTML 中span的平替。在 iOS 上Text最终映射为RCTText继承自UIView但内部使用CoreText渲染引擎在 Android 上它对应ReactTextView底层调用StaticLayout进行文本测量与绘制。这意味着同一段 JSX 在两端可能产生像素级差异——比如中文标点“。”在 iOS 上默认有 0.5pt 的字间距微调Android 则严格按字体 metrics 计算。我曾为一个金融 App 的数字金额显示踩过坑Text style{{fontSize: 16}}¥12,345.67/Text在 iPhone 12 上小数点对齐完美在 Pixel 5 上却向右偏移 1px。根源在于Text组件默认启用allowFontScaling{true}而 Android 系统设置中的“字体大小”缩放会干扰StaticLayout的 baseline 计算。解决方案不是关掉缩放牺牲无障碍而是显式指定lineHeight并锁定fontFamily“-apple-system, system-ui, Roboto, sans-serif” 这串 fallback 链在 Android 上会跳过前两项直接命中Roboto而Roboto的数字字形宽度与SF Pro不同。更隐蔽的是Text的嵌套规则它不允许直接包含 View 组件但可以嵌套另一个Text。这导致很多新手写Text价格ViewText¥199/Text/View/Text报错。为什么因为Text的渲染树必须是纯文本流View是块级容器强行嵌套会破坏CoreText的 glyph layout 流程。正确解法是用View包裹整个结构或利用Text的内联样式能力Text价格Text style{{fontWeight: bold}}¥199/Text/Text。这里Text承担了 HTML 中spanstrong的双重角色。另外Text的numberOfLines属性在 Android 上存在已知 bug当设为1且文本超长时部分旧版 RN0.63 以下会触发inconsistency detected. invalid item position错误——这正是你热搜词里提到的崩溃日志。根本原因是StaticLayout在单行模式下对ellipsize的处理逻辑缺陷。规避方案是升级 RN 版本或改用Text的ellipsizeModetail配合style{{width: 200}}强制截断。这些细节文档不会写但线上崩溃日志会如实记录。2.2 View 组件布局系统的“钢筋混凝土”骨架如果说Text是皮肤View就是支撑整个 App 的骨骼与肌肉。它对应原生的UIViewiOS和ViewGroupAndroid但其核心价值不在“显示什么”而在“如何组织”。View本身不渲染内容它是一个纯粹的布局容器所有样式属性flex,margin,padding,backgroundColor最终都转化为原生视图的 frame 和 layer 属性。这里的关键认知是React Native 的 Flexbox 实现并非 CSS 的完整移植而是基于 Yoga 库的精简版。Yoga 是 Facebook 开源的跨平台布局引擎它解决了不同平台渲染引擎对 Flexbox 解释不一致的问题。但代价是部分 CSS 属性缺失比如flex-wrap: wrap-reverse在 Yoga 中未实现。我遇到过最典型的场景是商品列表页设计师要求“三列瀑布流最后一行左对齐”用flexWrap: wrap加justifyContent: flex-start即可但若换成wrap-reverseRN 直接忽略。解决方案是手动计算每行 item 数量用View分组。另一个致命误区是View的position属性。position: absolute在 RN 中的行为与 Web 一致但position: relative的zIndex行为有差异在 Android 上zIndex仅在同一父View的子元素间生效跨父级时渲染顺序由 JS 层的组件声明顺序决定。这就解释了为什么你把一个Modal放在View后面却盖不住前面的Button——Modal的父级可能是RootView而Button的父级是ScrollViewzIndex失效。此时必须用Portal模式将Modal挂载到根节点。View的onLayout回调也常被低估。它返回的layout对象包含x,y,width,height是获取动态尺寸的唯一可靠途径。比如实现一个跟随手指滑动的 Tooltip不能依赖event.nativeEvent.pageX这是屏幕坐标而必须用onLayout获取目标View的绝对位置再做坐标转换。我见过太多人用Dimensions.get(window)硬编码屏幕宽高结果在折叠屏或分屏模式下布局错乱。View的testID属性则是自动化测试的生命线。View testIDproduct-card-123在 Detox 测试中可直接await element(by.id(product-card-123)).tap()比用accessibilityLabel更稳定——后者会被屏幕阅读器读出影响用户体验。记住View不是画布它是你构建 UI 的工程图纸每一笔flex、margin、zIndex都在定义像素的物理法则。2.3 State组件内部的“生物电脉冲”state是 React Native 的心跳是让静态 UI 拥有生命感的最小单元。但新手常犯的根本错误是把它当成“全局变量”或“缓存”。const [count, setCount] useState(0)这行代码背后是 React Fiber 架构下的一次精细调度useState返回的setCount并非立即修改count而是向 React 的更新队列Update Queue提交一个“变更请求”等待下一次 Reconciler 循环执行。这就是为什么console.log(count)在setCount(1)后仍打印0——count是闭包捕获的旧值。真正的状态变更发生在render函数重新执行时。我教学生时总用一个比喻state不是水龙头而是水库的闸门。setCount是拉闸动作但水流新值要等下次“开闸放水”re-render才涌出。这个延迟特性导致经典陷阱在一个循环中多次调用setCount如for (let i0; i3; i) setCount(i)最终count只会是2因为三次更新被合并为一次React 的 batching 机制。解决方法是使用函数式更新setCount(prev prev 1)确保每次更新都基于最新状态。state的另一个隐形约束是“不可变性”。const [user, setUser] useState({name: Alice, age: 25})若想更新年龄必须setUser({...user, age: 26})而非user.age 26; setUser(user)。后者会破坏 React 的浅比较shallow compare导致render不触发。这在复杂对象嵌套时尤为危险。比如user.profile.address.city Beijing即使address对象引用未变city字段的修改也不会被检测到。此时需用深克隆库或immer。state的初始化函数也常被滥用。useState(() { return fetchUserData(); })看似优雅实则埋雷fetchUserData会在每次组件挂载时执行但若它返回 Promisestate会得到一个 pending 状态的对象而非数据。正确姿势是useEffect中调用 API再setState。最后state的生命周期绑定组件实例。一个state变量只属于声明它的组件无法跨组件共享——这正是props存在的意义。理解state的“局部性”和“异步性”是写出可预测 UI 的第一道门槛。2.4 Props组件间的“神经突触信号”如果state是组件内部的生物电props就是神经元之间的突触信号——它定义了组件如何接收外部指令并作出反应。props的核心契约是只读Read-only与单向流动Unidirectional Data Flow。父组件通过ChildComponent nameAlice onLogin{() {}} /传入props子组件ChildComponent内部只能读取props.name和调用props.onLogin()绝不能props.name Bob。这种强制只读性是 React 避免状态污染的基石。但新手常混淆props与state的职责边界。典型场景一个搜索框组件SearchInput父组件传入value和onChange子组件应完全受控Controlled ComponentTextInput value{props.value} onChangeText{props.onChange} /。若子组件自己用useState管理inputValue就成了非受控组件Uncontrolled父组件无法同步其状态导致“输入框变了但父组件 state 没更新”的诡异现象。props的传递还涉及性能陷阱。List items{this.state.items} /若items是一个大数组每次setState都会创建新数组引用即使内容未变List组件也会因props引用变化而 re-render。解决方案是React.memo包裹List并在areEqual函数中做深度比较或用useMemo缓存items。props的类型安全同样关键。TypeScript 中interface SearchProps { query: string; onSearch: (q: string) void; }能在编译期捕获onSearch被误传为字符串的错误。而prop-types库则提供运行时校验SearchInput.propTypes { query: PropTypes.string.isRequired, onSearch: PropTypes.func.isRequired }。当传入onSearch: not a function时控制台会抛出明确警告而非静默失败。props的默认值defaultProps也需谨慎。Button.defaultProps { type: primary }看似无害但若type是枚举值最好用 TypeScript 的type ButtonProps { type?: primary | secondary }避免字符串拼写错误。props的终极形态是“高阶组件”HOC和“Render Props”模式。DataProvider render{(data) MyComponent data{data} /} /将数据获取逻辑与 UI 渲染解耦data作为props注入MyComponent实现了关注点分离。理解props的只读性、单向性与类型契约是构建可维护组件树的神经系统。3. 实操环节从零构建一个可交互的 Text 组件3.1 创建基础 Text 组件并验证渲染一致性我们从最简路径开始创建一个CustomText组件它接受text和color两个props内部用state管理是否高亮并通过Text组件渲染。首先在src/components/CustomText.tsx中编写import React, { useState } from react; import { Text, TouchableOpacity, StyleSheet } from react-native; interface CustomTextProps { text: string; color?: string; onPress?: () void; } const CustomText ({ text, color #000, onPress }: CustomTextProps) { const [isHighlighted, setIsHighlighted] useState(false); return ( TouchableOpacity activeOpacity{0.7} onPress{() { setIsHighlighted(!isHighlighted); onPress?.(); }} style{styles.container} Text style{[ styles.text, { color }, isHighlighted styles.highlighted ]} {text} /Text /TouchableOpacity ); }; const styles StyleSheet.create({ container: { paddingVertical: 8, paddingHorizontal: 12, }, text: { fontSize: 16, lineHeight: 24, }, highlighted: { fontWeight: bold, textDecorationLine: underline, } }); export default CustomText;关键点解析TouchableOpacity的必要性Text组件本身不支持onPress必须用TouchableOpacity或TouchableWithoutFeedback包裹。activeOpacity{0.7}提供点击反馈这是移动端 UX 的基本要求。StyleSheet.create的优势相比内联样式{color: props.color}StyleSheet.create会将样式对象编译为整数 ID减少 JS 与原生线程间的数据序列化开销。在列表页滚动时这点性能差异会放大。isHighlighted的状态管理这里state仅用于控制视觉反馈符合“本地状态”原则。若高亮状态需跨组件共享如多个CustomText同步高亮则应提升到父组件state通过props下发。在App.tsx中使用import CustomText from ./components/CustomText; const App () { return ( SafeAreaProvider View style{styles.container} CustomText text点击我高亮 color#2563eb onPress{() console.log(clicked!)} / /View /SafeAreaProvider ); };注意SafeAreaProvider必须包裹整个 App否则Text在 iPhone X 的刘海区域会被遮挡。这是你热搜词中react native safeareaprovider的实际应用场景——它不是一个可选装饰而是 iOS 安全区适配的基础设施。3.2 深度定制 Text 样式处理简繁转换与文本装饰现在让CustomText支持简繁转换。我们不引入第三方库而是用一个轻量脚本类似你热搜词中的adobe ai 文本简繁转换脚本.jsx思路。创建utils/zhConverter.ts// 简繁映射表精简版实际项目用 full table const SIMPLIFIED_TO_TRADITIONAL: Recordstring, string { 中国: 中國, 北京: 北京, 软件: 軟體, 信息: 資訊, 开发: 開發, 技术: 技術, 公司: 公司, 产品: 產品, 服务: 服務, 市场: 市場, 用户: 用戶, 数据: 數據, 网络: 網路, 手机: 手機, 电脑: 電腦, 互联网: 互聯網, 人工智能: 人工智慧, 机器学习: 機器學習, 大数据: 大數據, 云计算: 雲計算, 区块链: 區塊鏈, 物联网: 物聯網, 虚拟现实: 虛擬現實, 增强现实: 增強現實, 5G: 5G, Wi-Fi: Wi-Fi, USB: USB, HTML: HTML, CSS: CSS, JavaScript: JavaScript, TypeScript: TypeScript, React: React, Native: Native, App: App, iOS: iOS, Android: Android, Windows: Windows, Mac: Mac, Linux: Linux, Unix: Unix, Git: Git, GitHub: GitHub, npm: npm, yarn: yarn, webpack: webpack, babel: babel, eslint: eslint, prettier: prettier, jest: jest, testing: 測試, debug: 除錯, error: 錯誤, warning: 警告, info: 資訊, success: 成功, fail: 失敗, loading: 載入中, submit: 提交, cancel: 取消, confirm: 確認, delete: 刪除, edit: 編輯, view: 檢視, search: 搜尋, filter: 篩選, sort: 排序, page: 頁, next: 下一頁, previous: 上一頁, first: 第一頁, last: 最後一頁, total: 總計, count: 數量, amount: 金額, price: 價格, discount: 折扣, sale: 促銷, new: 新, hot: 熱門, featured: 精選, recommended: 推薦, popular: 流行, trending: 趨勢, latest: 最新, oldest: 最舊, date: 日期, time: 時間, year: 年, month: 月, week: 週, day: 天, hour: 小時, minute: 分鐘, second: 秒, ago: 前, later: 後, now: 現在, today: 今天, tomorrow: 明天, yesterday: 昨天, this week: 本週, last week: 上週, next week: 下週, this month: 本月, last month: 上月, next month: 下月, this year: 今年, last year: 去年, next year: 明年, all: 全部, none: 無, any: 任何, some: 一些, many: 許多, few: 少數, more: 更多, less: 更少, most: 最多, least: 最少, first: 第一, second: 第二, third: 第三, fourth: 第四, fifth: 第五, sixth: 第六, seventh: 第七, eighth: 第八, ninth: 第九, tenth: 第十, eleventh: 第十一, twelfth: 第十二, thirteenth: 第十三, fourteenth: 第十四, fifteenth: 第十五, sixteenth: 第十六, seventeenth: 第十七, eighteenth: 第十八, nineteenth: 第十九, twentieth: 第二十, hundredth: 第一百, thousandth: 第一千, millionth: 第一百万, billionth: 第一十亿, trillionth: 第一万亿, quadrillionth: 第一千万亿, quintillionth: 第一百亿亿, sextillionth: 第一千亿亿, septillionth: 第一万亿亿, octillionth: 第一千万万亿, nonillionth: 第一百亿万亿, decillionth: 第一千亿万亿, undecillionth: 第一万亿万亿, duodecillionth: 第一千万亿万亿, tredecillionth: 第一百亿亿万亿, quattuordecillionth: 第一千亿亿万亿, quindecillionth: 第一万亿亿万亿, sexdecillionth: 第一千万亿亿万亿, septendecillionth: 第一百亿亿亿万亿, octodecillionth: 第一千亿亿亿万亿, novemdecillionth: 第一万亿亿亿万亿, vigintillionth: 第一千万亿亿亿万亿, unvigintillionth: 第一百亿亿亿亿万亿, duovigintillionth: 第一千亿亿亿亿万亿, trevigintillionth: 第一万亿亿亿亿万亿, quattuorvigintillionth: 第一千万亿亿亿亿万亿, quinvigintillionth: 第一百亿亿亿亿亿万亿, sexvigintillionth: 第一千亿亿亿亿亿万亿, septenvigintillionth: 第一万亿亿亿亿亿万亿, octovigintillionth: 第一千万亿亿亿亿亿万亿, novemvigintillionth: 第一百亿亿亿亿亿亿万亿, trigintillionth: 第一千亿亿亿亿亿亿万亿, untrigintillionth: 第一万亿亿亿亿亿亿亿万亿, duotrigintillionth: 第一千万亿亿亿亿亿亿万亿, tretrigintillionth: 第一百亿亿亿亿亿亿亿万亿, quattuortrigintillionth: 第一千亿亿亿亿亿亿亿万亿, quintrigintillionth: 第一万亿亿亿亿亿亿亿万亿, sextrigintillionth: 第一千万亿亿亿亿亿亿亿万亿, septentrigintillionth: 第一百亿亿亿亿亿亿亿万亿, octotrigintillionth: 第一千亿亿亿亿亿亿亿亿万亿, novemtrigintillionth: 第一万亿亿亿亿亿亿亿亿万亿, quadragintillionth: 第一千万亿亿亿亿亿亿亿亿万亿, unquadragintillionth: 第一百亿亿亿亿亿亿亿亿亿万亿, duoquadragintillionth: 第一千亿亿亿亿亿亿亿亿亿万亿, trequadragintillionth: 第一万亿亿亿亿亿亿亿亿亿万亿, quattuorquadragintillionth: 第一千万亿亿亿亿亿亿亿亿亿万亿, quinquadragintillionth: 第一百亿亿亿亿亿亿亿亿亿亿万亿, sexquadragintillionth: 第一千亿亿亿亿亿亿亿亿亿亿万亿, septenquadragintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿万亿, octoquadragintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿万亿, novemquadragintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿万亿, quinquagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿万亿, unquinquagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, duoquinquagintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, trequinquagintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, quattuorquinquagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, quinquinquagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, sexquinquagintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, septenquinquagintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, octoquinquagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, novemquinquagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, sexagintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, unsexagintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, duosexagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, tresexagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, quattuorsexagintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, quinsexagintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, sexsexagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, septensexagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, octosexagintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, novemsexagintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, septuagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, unseptuagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, duoseptuagintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, treseptuagintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, quattuorseptuagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, quinseptuagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, sexseptuagintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, septenseptuagintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, octoseptuagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, novemseptuagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, octogintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, unoctogintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, duooctogintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, treoctogintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, quattuoroctogintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, quinoctogintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, sexoctogintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, septenoctogintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, octooctogintillionth: 第一千万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, novemoctogintillionth: 第一百亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, nonagintillionth: 第一千亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, unnonagintillionth: 第一万亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿亿万亿, duononagintillionth: 第一千万亿亿亿

相关新闻