Record your life!
DashboardMy Blogs
RN Expo的一些坑
Blog
react
By sakopqiu2025-11-30 04:02
  • 如果numOfColumns设置为2,那么也需要对FlatList的contentContainerStyle和columnWrapperStyle同时设置,前者是设置行与行的gap,后者是行内两个column的gap。前者还可以设置padding

  • FlatList如果numOfColumns为2,且每个元素的flex设置为1(这是合理的,大家都是flex:1,就尽可能占满空间),且最后一行只有一个column,但那么最后这个组件会撑满,可以放上max-width: 50%

  • <Link asChild> 里可以放置复杂元素,但是需要放置有onPress事件的组件,所以不能放置View,而应该放置Pressable

  • Gesture相关的响应函数,需要使用runOnJS包装。这个是在UI线程里调用JS线程的内容时必须这样写。

const move2 = Gesture.Pan()
        .onUpdate((e) => {
            if (e.translationX > 100) {
                runOnJS(setShowModal)(false);
            }
        })
  • Tab里让item不出现的方法
// index跳转到menu,但index不再tab里出现
<Tabs.screen name="index" options={{href: null}} />

export default function (){
    return <Redirect href="/menu"/>
}

// menu目录里创建一个index.tsx
  • <Stack.Screen/> 声明也可以放到组件里面,有两个好处,一个是不需要写name属性,另一个是可以获取组件内部的动态属性。

  • Supabase的每个数据表都有API提示可以查,另外他的ts类型声明也可以下载,不需要自己写

  • Supabase的table join非常方便,

await supbase.from('orders')
        .select('*, order_items(*, products(*))') // order信息横跨3张表的join
        .eq('id', id)
        .single();

Edit