V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  razor1895  ›  全部回复第 3 页 / 共 17 页
回复总数  328
1  2  3  4  5  6  7  8  9  10 ... 17  
可惜 base 深圳啊,目前远程兼职在做一个美国的项目,从 0-1 带美国那边的 3 个实习生完成了一个大学生社交 app ,使用 React Naitve 和 Node.js ,并使用了 chatgpt 做内容审核
288 天前
回复了 chaxus 创建的主题 求职 前端求职,目前前端市场怎么样呢?
我 20 年从北京回的成都,实话实说,成都不好找工作,工资有天花板,在北京遍地都能找到公积金交满的工资,成都全额 6%都算不错的了,有更多的可以加微信交流
288 天前
回复了 pangdundun996 创建的主题 程序员 能否通过 GPT 改写开源框架
https://chat.openai.com/g/g-MXIPFnXHY

另外 github 也有一个项目调用 chatgpt api 也能做到,我找找
和我的名字一模一样
RevenueCat 需要付费吗?
291 天前
回复了 puddinord 创建的主题 MacBook Pro m 芯片 macbook pro 二手价格
可以直接就买监管机了,8000 ,m1 pro, 32g, 512g
294 天前
回复了 wenxiao12 创建的主题 求职 求成都前端内推
唉,真难啊
296 天前
回复了 WebSystem 创建的主题 程序员 新项目规模小怎么开发 app 是最优解?
@WebSystem #14 wechat d2J6bjgxMw==
297 天前
回复了 WebSystem 创建的主题 程序员 新项目规模小怎么开发 app 是最优解?
看你论坛的复杂度吧,如果你网页版的页面有对移动端做适配,可以部分页面用 h5 ,其他用 RN 或者 flutter... 如果考虑 RN 的话我可以搞,10 月刚上架了一个美区的 RN App
前端岗位有吗
支持以下
@GOKOG 咸鱼,怡辰数码,我两周前买的,现在貌似我这款没货了
@qinyq 咸鱼,怡辰数码,我两周前买的,现在貌似我这款没货了
1-3 年是硬性规定吗,7 年工作经验接受不
@yhxx 刚入手一个监管机,8200 ,m1 pro 10 + 16 核 32g 内存 512g 固态
333 天前
回复了 owen800q 创建的主题 程序员 react native 如何实现这样的底部导航栏
这是一个精简版本的实现

import { useEffect } from 'react';
import { Platform, StyleSheet, TouchableOpacity, View } from 'react-native';
import FastImage from 'react-native-fast-image';
import { trigger } from 'react-native-haptic-feedback';

import { BlurView } from '@react-native-community/blur';
import { BottomTabBarProps } from '@react-navigation/bottom-tabs';
import { useQueryClient } from '@tanstack/react-query';

import { TAB_BAR_HEIGHT } from '@/styles';
import { p2d } from '@/utils';
import { pubsub } from '@/utils/pubsub';

import { Badge } from './Badge';

const TabBarIconMap = [
{
inactive: require('@/assets/icons/icon-crushes.png'),
active: require('@/assets/icons/icon-crushes-focused.png'),
style: {
width: p2d(24),
height: p2d(17),
},
},
{
inactive: require('@/assets/icons/icon-news.png'),
active: require('@/assets/icons/icon-news-focused.png'),
style: {
width: p2d(23),
height: p2d(18.596),
},
},
{
inactive: require('@/assets/icons/icon-confessions.png'),
active: require('@/assets/icons/icon-confessions-focused.png'),
style: {
width: p2d(18.35),
height: p2d(17),
},
},
{
inactive: require('@/assets/icons/icon-profile.png'),
active: require('@/assets/icons/icon-profile-focused.png'),
style: {
width: p2d(11),
height: p2d(17),
},
},
];

const TabBarIcon = ({
focused,
index,
tabBarBadge,
}: {
focused: boolean;
index: number;
tabBarBadge?: string | number;
}) => {
const map = TabBarIconMap[index];
return (
<View>
<FastImage
source={focused ? map.active : map.inactive}
style={map.style}
resizeMode='contain'
/>
<Badge visible={!!tabBarBadge} style={styles.badge}>
{tabBarBadge}
</Badge>
</View>
);
};

let showedInviteModal = false;

export function TabBar({ state, descriptors, navigation }: BottomTabBarProps) {
// @ts-ignore
const bottom = global.bottomInset || 0;
const queryClient = useQueryClient();

useEffect(() => {
const disposer = pubsub.subscribe('have_shown_swipe_modal', () => {
showedInviteModal = true;
});

return disposer;
}, []);

return (
<View style={[styles.container, { bottom: Math.max(bottom, 10) }]}>
{Platform.OS === 'ios' && (
<BlurView blurType='xlight' blurAmount={2} style={StyleSheet.absoluteFillObject} />
)}
{state.routes.map((route, index) => {
const { options } = descriptors[route.key];

const isFocused = state.index === index;

const onPress = () => {
const event = navigation.emit({
type: 'tabPress',
target: route.key,
canPreventDefault: true,
});
trigger('impactMedium');

if (!isFocused && !event.defaultPrevented) {
// The `merge: true` option makes sure that the params inside the tab screen are preserved
navigation.navigate({ name: route.name, merge: true });
}
};

return (
<TouchableOpacity
key={String(index)}
accessibilityRole='button'
accessibilityState={isFocused ? { selected: true } : {}}
accessibilityLabel={options.tabBarAccessibilityLabel}
testID={options.tabBarTestID}
onPress={onPress}
style={styles.item}
>
<TabBarIcon focused={isFocused} index={index} tabBarBadge={options.tabBarBadge} />
</TouchableOpacity>
);
})}
</View>
);
}

const styles = StyleSheet.create({
container: {
position: 'absolute',
// bottom: 0,
// left: 0,
height: TAB_BAR_HEIGHT,
flexDirection: 'row',
// backgroundColor: 'transparent',
backgroundColor: 'rgba(255,255,255,0.3)',
width: p2d(234),
alignSelf: 'center',
alignItems: 'center',
borderRadius: p2d(10),
overflow: 'hidden',
},
item: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
icon: {
width: p2d(18),
height: p2d(18),
},
badge: {
position: 'absolute',
right: p2d(-5),
top: p2d(-4),
},
});

自己实现 ui 即可
333 天前
回复了 owen800q 创建的主题 程序员 react native 如何实现这样的底部导航栏
1  2  3  4  5  6  7  8  9  10 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2465 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 30ms · UTC 01:14 · PVG 09:14 · LAX 18:14 · JFK 21:14
Developed with CodeLauncher
♥ Do have faith in what you're doing.