如果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);
}
})
// 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();