游牧周记第41期
日常
阳台种菜
九层塔、冰菜、生菜、羽衣甘蓝又割了一茬。

正好在B站看到一个视频,关于吃蔬菜的危害(我是一名生物专业的学生,这就是为什么我不吃蔬菜),其实是有道理的,我懂。 当然他还有关于不吃水果等的视频。
关注
HTX Studio
虽然知道何同学很厉害,但他们在国内发布的视频我都看得不多(感觉比影视飓风强点不多)。 本周突然在Youtube看到了他的英文版,而且发音不太像AI(如果是真的,那他的English is quite good.。 现在有117万订阅,每个视频10w+播放,这是只有6个长视频的情况下,BTW,我全部看完了。 几乎所有的评论都在感叹其制作质量和内容是降维打击。 可能老外们不会注意到这些优秀的团队都来自杭州。
开发
Expo SDK 54后发生的问题
发现ThemeProvider似乎不能动态的调整了,也就是value不能变化。 还在找原因。
CLI 型 AI 开发工具
装了Claude Code和Gemini Cli,下一步还有Codex,总得用到的,先看看吧。 CC由于封号原因,先用了国内某代理,价格比官方贵一倍,还随时抽风。 Gemini Cli用Google Account的API Key连接auth,每次用之前把终端proxy调到位。 Codex还没开始,因为必须注册pro账号,还是等代理吧。 哎国内开发就是找罪受。
React Native Dimensions函数
- 问题:react native中, Dimensions.get('screen')和 Dimensions.get('window')获取的数据有何不同?
- 回答(by Kimi):
在 React Native 中,Dimensions.get('screen') 和 Dimensions.get('window') 都可以获取设备的尺寸信息,但它们返回的数据含义不同,适用于不同的场景。
✅ 一句话区别:
-
Dimensions.get('window'):获取的是应用窗口的尺寸(不包括状态栏、导航栏等系统 UI)。 -
Dimensions.get('screen'):获取的是整个屏幕的尺寸(包括状态栏、导航栏等系统 UI)。
📌 举个例子(以竖屏 Android 手机为例):
表格
复制
| 属性 | window | screen |
|---|---|---|
| width | 应用可用宽度 | 屏幕总宽度 |
| height | 应用可用高度(不含状态栏/导航栏) | 屏幕总高度(含状态栏/导航栏) |
⚠️ 注意事项:
-
在 iOS 上,
window和screen通常是一样的(除非有状态栏隐藏或特殊布局)。 -
在 Android 上,两者经常不同,尤其是有虚拟导航栏的设备。
-
如果你在做全屏布局或适配刘海屏,建议优先使用
window,因为它反映的是应用实际可用区域。
✅ 最佳实践:
-
用
Dimensions.get('window')来布局页面内容。 -
用
Dimensions.get('screen')来调试或获取设备总尺寸(很少用于布局)。
🔍 示例代码:
JavaScript
复制
import { Dimensions } from 'react-native';
const window = Dimensions.get('window');
const screen = Dimensions.get('screen');
console.log('Window:', window);
console.log('Screen:', screen);
✅ 总结一句话:
window是你能用的,screen是你能看的。布局用window,调试看screen。
React Native组合样式的性能问题
由于我的个人代码最佳styling实践中,大量采用了style=[...]方式的应用,以保持一定程度的灵活性 ,并希望至少做到超过或与tailwindcss(NativeWind)一致的性能。
但与单一style参数比,组合会多大程度上影响性能开销呢? 问了grok。
react native 代码:
const styles=StyleSheet.create({
a: { margin: 16},
b:{ padding: 16},
c:{ margin: 16, padding: 16 }})
...
<View style={[styles.a, styles.b]}> ...
<View style={styles.c}> ...
这两种写法,性能上差距大吗?如果[...]中组合数增加呢?
在 React Native 中,使用 StyleSheet.create 定义样式并通过 style 属性应用样式时,[styles.a, styles.b] 和 styles.c 这两种写法的性能差异需要从样式合并和渲染的机制来分析。以下是详细解答:
1. 两种写法的本质
[styles.a, styles.b]:这是将多个样式对象组合成一个数组,React Native 会在运行时将这些样式合并为一个单一的样式对象。合并过程会按照数组中样式的顺序,后面样式的属性会覆盖前面样式的同名属性(如果有冲突)。styles.c:这是一个单一的样式对象,React Native 直接应用这个样式,没有合并过程。
2. 性能差异分析
a. 单一样式对象(styles.c)
- 优点:React Native 直接使用
styles.c中的样式定义,无需额外的合并操作。样式解析和应用过程更直接,理论上性能开销最小。
