مساعدة في react-native

هاجر الروقي • منذ 6 سنوات

السلام عليكم ورحمة الله وبركاته 

من فضلكم أحتاج مساعدة في الرياكت نايتيف 

عندي هذي الواجهة : 

 

أبغى أضيف لها زر invite بحيث تصير بهذا الشكل :

وأبغى كمان الأسماء تترتب بنفس الطريقة لكن ماقدرت أضيفها بأي شكل

 

هذا كودي : 

import React, { Component } from "react";
import { View, Text, FlatList, ActivityIndicator , Button } from "react-native";
import { List, ListItem, SearchBar } from "react-native-elements";
//import UserAvatar from "user-avatar";
//import ReactDOM from 'react-dom';
//import MaterialInitials from 'react-native-material-initials/native';
export default class FlatListDemo extends Component {
  constructor(props) {
    super(props);

    this.state = {
      loading: false,
      data: [],
      page: 1,
      seed: 1,
      error: null,
      refreshing: false
    
    };  
  }

  componentDidMount() {
    this.makeRemoteRequest();
  }

  makeRemoteRequest = () => {
    const { page, seed } = this.state;
    const url = `https://randomuser.me/api/?seed=${seed}&page=${page}&results=20`;
    this.setState({ loading: true });

    fetch(url)
      .then(res => res.json())
      .then(res => {
        this.setState({
          data: page === 1 ? res.results : [...this.state.data, ...res.results],
          error: res.error || null,
          loading: false,
          refreshing: false
        });
      })
      .catch(error => {
        this.setState({ error, loading: false });
      });
  };

  handleRefresh = () => {
    this.setState(
      {
        page: 1,
        seed: this.state.seed + 1,
        refreshing: true
      },
      () => {
        this.makeRemoteRequest();
      }
    );
  };

  handleLoadMore = () => {
    this.setState(
      {
        page: this.state.page + 1
      },
      () => {
        this.makeRemoteRequest();
      }
    );
  };

  renderSeparator = () => {
    return (
      <View
        style={{
          height: 1,
          width: "86%",
          backgroundColor: "#CED0CE",
          marginLeft: "14%"
        }}
      />
    );
  };

  renderHeader = () => {
    return <SearchBar placeholder="Type Here..." lightTheme round 
    searchIcon={{ size: 34 }}
    containerStyle={{backgroundColor: "#b71540"}}
    inputStyle={{backgroundColor: 'white'}}
    />;
  };

  renderFooter = () => {
    if (!this.state.loading) return null;

    return (
      <View
        style={{
          paddingVertical: 20,
          borderTopWidth: 1,
          borderColor: "#CED0CE"
        }}
      >
        <ActivityIndicator animating size="large" />
      </View>
    );
  };
  
  render() {
    return (
      <List containerStyle={{ borderTopWidth: 0, borderBottomWidth: 0 }}>
        <FlatList
          data={this.state.data}
          renderItem={({ item }) => (
            <ListItem
              roundAvatar
              title={`${item.name.first} ${item.name.last}`}
              subtitle={item.email}
              
              containerStyle={{ borderBottomWidth: 0 }}
             
            />   
            )         } 
       
          keyExtractor={item => item.email}
          ItemSeparatorComponent={this.renderSeparator}
          ListHeaderComponent={this.renderHeader}
          ListFooterComponent={this.renderFooter}
          onRefresh={this.handleRefresh}
          refreshing={this.state.refreshing}
          onEndReached={this.handleLoadMore}
          onEndReachedThreshold={50}
        />
      </List>
      
    );
  }
  
}

 

وشكرًا جزيلًا 

كلمات دليلية: react reactjs

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (3)

احمد الجعيد • منذ 6 سنوات
مميز

اصدار react-native-elemnts المستخدم في مشروعك لا يدعم اضافة rightElement الى ListItem تحتاج تحميل نسخة beta الاصدار السابع

yarn add [email protected]

يوجد الكثير من المميزات ومنها اضافة لون متدرج للـButtons 

ListItem

<ListItem
                            roundAvatar
                            title={`${item.name.first} ${item.name.last}`}
                            subtitle={item.email}
                            leftAvatar={{source: {uri: item.picture.large}}}
                            containerStyle={{borderBottomWidth: 0}}
                            rightElement={<Button
                                text="Invite"
                                ViewComponent={LinearGradient}
                                linearGradientProps={{
                                    colors: ['#FF9800', '#F44336'],
                                    start: [1, 0],
                                    end: [0.2, 0],
                                }}
                            />
                            }

                        />

النتيجة النهائية :

 

الملف على github

https://github.com/ahmedoid/3alamPro-react-native

 

هاجر الروقي: يعطيك العافيةأستاذ أحمد ماقصرت والله لكن ودي لو توضح الاصدارات اللي استعملتها غير رياكت نايتيف ايلمنت لان عندي مشكلة في 'react-native-linear-gradient' بعد استعمال كود حضرتكم وشكرا جزيلا

احمد الجعيد: الاصدارات موجودة في ملف package.gson . تحتاج https://github.com/react-native-community/react-native-linear-gradient الى ربط مع النيتف كود الخطوات مشروحه في صفحة المكتبة ،

هاجر الروقي: بحاول وان شاء الله تزبط معاي .. شكرا جزيلا استاذ احمد

هاجر الروقي • منذ 6 سنوات

مالعمل ؟؟؟؟ 

 

هاجر الروقي • منذ 6 سنوات

لما حملت الفايل المرفق من قيت هب وسويت له رن كذا يطلع لي رغم ان فايل app.json موجود

هاجر الروقي: لايش بالضبط ؟

هاجر الروقي: اذا قصدك احمل npm الريدي محمل وانا استعمله اساسا ما استعمل yarn

احمد الجعيد: npm install او yarn ،، لان الباكجات غير محمله

هاجر الروقي: غريب أنا حملتها , فيه غير رياكت نيتيف ايلمنت وحق الالوان ؟

هاجر الروقي: الفايلات yarn lock و json-lockتأثر ؟؟؟؟؟؟؟؟؟

احمد الجعيد: نفس المشروع حمليه وشغليه وانقلي بطريقتك بعدين

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !