slogan3

Ontwikkel een Modulaire React Native Componentenbibliotheek voor Herbruikbare UI-elementen

description

Maakt snellere ontwikkeling mogelijk door hergebruik van goed gestructureerde UI-componenten, onderhoudt ontwerpconsistentie in je React Native-app en vereenvoudigt onderhoud en updates. Deze aanpak is beter dan ad-hoc componentcreatie omdat het schaalbaarheid en schonere codeorganisatie bevordert.

prompt

Help me een modulaire React Native componentenbibliotheek te ontwikkelen met herbruikbare UI-elementen die aanpasbare eigenschappen en stijlen bevatten. Geef best practices voor he ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier zijn best practices voor het ontwikkelen van een modulaire React Native componentenbibliotheek voor jouw sociale netwerkapp gericht op gebruikersprofielen en berichten: 1. Structuur en Organisatie van Componenten - Modulariseer Componenten: - Groepeer gerelateerde componenten (bijv. Profielkaart, Bericht, Knoppen) in mappen. - Gebruik een duidelijke hiërarchie zoals: /components /Profile ProfileCard.js ProfilePhoto.js ProfileDetails.js /Message MessageBubble.js MessageInput.js /Common Button.js Icon.js - Herbruikbare Basiscomponenten: - Ontwikkel basiscomponenten (bijv. Button, Text, Avatar) die door andere componenten kunnen worden uitgebreid. - Consistente Naming Conventies: - Gebruik duidelijke en consistente namen voor componenten en bestanden (bijv. PascalCase voor componenten). 2. Beheer van Afhankelijkheden - Gebruik een Package Manager: - Gebruik npm of yarn voor het beheren van externe afhankelijkheden. - Minimaliseer Externe Dependencies: - Voeg alleen noodzakelijke libraries toe (bijvoorbeeld react-native-vector-icons, react-native-gesture-handler). - Centraliseer Shared Resources: - Maak een /styles of /constants map voor kleuren, lettertypen, en andere thematische waarden. 3. Styling en Thematisering - Gebruik van Styled Components of StyleSheet: - Overweeg styled-components voor dynamische en thematische styling. - Of gebruik StyleSheet voor statische styles. - Themasysteem: - Implementeer een themasysteem (bijv. licht/donker) dat eenvoudig te switchen is. 4. Cross-Platform Compatibiliteit - Gebruik Platform Module: - Implementeer platform-specifieke code met react-native's Platform API. - Vermijd Platform-afhankelijke API's: - Kies voor API's en componenten die op beide platforms werken. - Test op Verschillende Apparaten: - Gebruik emulators en echte apparaten voor iOS en Android. 5. Aanpasbaarheid en Herbruikbaarheid - Props en Style Overrides: - Ontwerp componenten met props voor aanpassing (bijv. kleur, grootte). - Default Props en Types: - Gebruik PropTypes en TypeScript voor typeveiligheid. - Composition over Inheritance: - Bouw complexere componenten door samenstellen van eenvoudigere. 6. Documentatie en Versiebeheer - Documenteer Componenten: - Voeg JSDoc of Storybook toe voor documentatie. - Versiebeheer: - Gebruik Git voor versiebeheer en semantische versiecontrole. 7. Testing - Unit en Integratietests: - Schrijf tests met Jest en React Native Testing Library. - Visual Regression: - Overweeg tools voor visuele tests om UI consistentie te waarborgen. 8. Voorbeeld voor een Profielkaart ```jsx // /components/Profile/ProfileCard.js import React from 'react'; import { View, Text, Image, StyleSheet } from 'react-native'; const ProfileCard = ({ name, avatarUrl, bio, style }) => ( <View style={[styles.card, style]}> <Image source={{ uri: avatarUrl }} style={styles.avatar} /> <Text style={styles.name}>{name}</Text> <Text style={styles.bio}>{bio}</Text> </View> ); const styles = StyleSheet.create({ card: { padding: 16, borderRadius: 8, backgroundColor: '#fff', // Voeg platform-specifieke stijlen toe indien nodig }, avatar: { width: 80, height: 80, borderRadius: 40, }, name: { marginTop: 8, fontSize: 20, fontWeight: 'bold', }, bio: { marginTop: 4, fontSize: 14, color: '#666', }, }); export default ProfileCard; ``` Samengevat: - Organiseer componenten logisch en herbruikbaar. - Beheer afhankelijkheden zorgvuldig. - Zorg voor consistente styling en thematisering. - Test op meerdere platformen. - Documenteer en onderhoud de bibliotheek regelmatig. Veel succes met je React Native componentenbibliotheek voor je sociale netwerkapp!
provider: deepseek
model: deepseek-chat
Beste ontwikkelaar, hier is een gestructureerde aanpak voor het ontwikkelen van een modulaire React Native componentenbibliotheek voor je sociale netwerkapp: ## 🏗️ Componentenorganisatie **Mapstructuur:** ``` src/ ├── components/ │ ├── core/ (Basiscomponenten) │ │ ├── Button/ │ │ ├── Input/ │ │ └── Avatar/ │ ├── profile/ (Profiel-specifiek) │ │ ├── ProfileCard/ │ │ ├── BioSection/ │ │ └── StatsBadge/ │ ├── messaging/ (Berichtenfunctionaliteit) │ │ ├── MessageBubble/ │ │ ├── ChatInput/ │ │ └── ConversationList/ │ └── shared/ (Gedeelde utilities) │ └── hooks/ │ └── utils/ ``` ## 🎨 Component Design Principles ```typescript // Voorbeeld: Aanpasbare ProfileCard component interface ProfileCardProps { user: User; onPress?: () => void; size?: 'small' | 'medium' | 'large'; showStats?: boolean; theme?: 'light' | 'dark'; customStyles?: StyleProp<ViewStyle>; } ``` ## 📦 Dependency Management **Package.json setup:** ```json { "peerDependencies": { "react": ">=16.8.0", "react-native": ">=0.60.0" }, "devDependencies": { "@types/react": "^18.0.0", "typescript": "^4.0.0" } } ``` ## 📱 Cross-Platform Compatibiliteit **Platform-specifieke implementatie:** ```typescript // components/core/Button/index.ts import { Platform } from 'react-native'; import ButtonIOS from './Button.ios'; import ButtonAndroid from './Button.android'; export default Platform.select({ ios: ButtonIOS, android: ButtonAndroid, }); ``` ## 🧪 Testing Strategie ```bash # Test structuur __tests__/ components/ core/ Button.test.tsx profile/ ProfileCard.test.tsx ``` ## 🎭 Theming & Styling ```typescript // themes/defaultTheme.ts export const defaultTheme = { colors: { primary: '#1877F2', // Facebook-blauw voor sociale app secondary: '#42B883', background: '#FFFFFF', text: '#1C1E21' }, spacing: { xs: 4, sm: 8, md: 16, lg: 24 } }; ``` ## 🔧 Build & Publicatie **Rollup configuratie:** ```javascript // rollup.config.js export default { input: 'src/index.ts', output: [ { file: 'dist/index.js', format: 'cjs' } ], external: ['react', 'react-native'] }; ``` ## 📚 Documentatie ```markdown // Voor elke component: /** * ProfileCard - Toont gebruikersprofielinformatie * * @param {User} user - Gebruikersobject * @param {('small'|'medium'|'large')} size - Grootte variant * @example * <ProfileCard user={userData} size="medium" /> */ ``` ## 🚀 Performance Best Practices - Gebruik `React.memo` voor pure components - Implementeer lazy loading voor zware componenten - Gebruik FlatList voor lange lijsten - Vermijd inline styles en functions ## 📦 Publicatie als NPM Package ```json { "name": "@jouw-bedrijf/social-ui", "version": "1.0.0", "main": "dist/index.js", "types": "dist/index.d.ts" } ``` ## 🔄 Versionering Volg Semantic Versioning (semver): - **Major**: Breaking changes - **Minor**: Nieuwe features (backward compatible) - **Patch**: Bug fixes Deze aanpak zorgt voor een schaalbare, onderhoudbare componentenbibliotheek die perfect past bij de behoeften van je sociale netwerkapp!