الفرق بين المراجعتين لصفحة: «ReactNative/using a listview»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:استخدام عروض القوائم في React Native}}</noinclude> ==عروض القوائم (List views)== يُوفِّر React Native م...'
 
لا ملخص تعديل
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:استخدام عروض القوائم في React Native}}</noinclude>
<noinclude>{{DISPLAYTITLE:استخدام عروض القوائم في React Native}}</noinclude>
==عروض القوائم (List views)==
==عروض القوائم (List views)==
يُوفِّر React Native مجموعةً من المكونات لتقديم قوائم البيانات. عمومًا، ستستخدم في تطبيقك إمّاFlatList أو SectionList.
يُوفِّر React Native مجموعةً من المكونات لتقديم قوائم البيانات. عمومًا، ستستخدم في تطبيقك إمّا <code>[[ReactNative/flatlist|FlatList]]</code> أو <code>[[ReactNative/sectionlist|SectionList]]</code> لعرض القوائم.


يعرض مكوّن FlatList قائمةَ تمريرٍ لعرض البيانات التي تتغيَّر والتي تكون ذات شكلٍ منسّق وهيئة متشابهة. المكوّنFlatList فعّال وجيّد لعرض قوائم طويلة من البيانات التي قد يتغير فيها عدد العناصر بمرور الوقت. وعلى النّقيض من مكوّن ScrollView الأكثر عمومية فمُكوّنFlatList لا يُصيِّر إلى ما يُعرَض حاليًا على الشاشة وليس كل العناصر في وقت واحد، ما يُوفّر أداءً أفضل.
يعرض مكوّن <code>FlatList</code> قائمةَ تمريرٍ لعرض البيانات التي تتغيَّر والتي تكون ذات شكلٍ منسّق وهيئة متشابهة. المكوّن <code>FlatList</code> فعّال وجيّد لعرض قوائم طويلة من البيانات التي قد يتغير فيها عدد العناصر بمرور الوقت. وعلى النّقيض من مكوّن <code>[[ReactNative/scrollview|ScrollView]]</code> الأكثر عمومية فمُكوّن <code>FlatList</code> لا يُصيِّر إلى ما يُعرَض حاليًا على الشاشة وليس كل العناصر في وقت واحد، ما يُوفّر أداءً أفضل.


يتطلب مكوّن FlatList خاصيّتين اثنتين: ‎<code>data</code>‎ و‎<code>renderItem</code>‎، تُمثّل الخاصيّة ‎<code>data</code>‎ مصدر بيانات القائمة (كمصفوفة أسماءٍ مثلًا). وتأخذ الخاصيّة renderItem عنصرًا واحدًا من المصدر في كلّ مرّة وتُعيد مكوّنًا منسّقًا لتصييره.
يتطلب مكوّن <code>FlatList</code> خاصيّتين اثنتين: ‎<code>data</code>‎ و‎<code>renderItem</code>‎، تُمثّل الخاصيّة ‎<code>data</code>‎ مصدر بيانات القائمة (كمصفوفة أسماءٍ مثلًا). وتأخذ الخاصيّة <code>renderItem</code> عنصرًا واحدًا من المصدر في كلّ مرّة وتُعيد مكوّنًا منسّقًا لتصييره.


ينشئ هذا المثال قائمةَ ‎<code>FlatList</code>‎ من بياناتٍ مُباشرَة (hardcoded). يُصيَّر كل عنصرٍ من عناصر الخاصيّة ‎<code>data</code>‎ داخل مُكوِّن ‎<code>Text</code>‎ نصيٍّ. بعدها يُصيِّر المكوّن FlatListBasics قائمةَFlatList وجميع المكونات النصيّة.
ينشئ هذا المثال قائمةَ ‎<code>FlatList</code>‎ من بياناتٍ مُباشرَة (hardcoded). يُصيَّر كل عنصرٍ من عناصر الخاصيّة ‎<code>data</code>‎ داخل مُكوِّن ‎<code>Text</code>‎ نصيٍّ. بعدها يُصيِّر المكوّن <code>FlatListBasics</code> قائمةَ <code>FlatList</code> وجميع المكونات النصيّة.
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
import React, { Component } from 'react';
import React, { Component } from 'react';
سطر 49: سطر 49:
AppRegistry.registerComponent('AwesomeProject', () => FlatListBasics);
AppRegistry.registerComponent('AwesomeProject', () => FlatListBasics);
</syntaxhighlight>
</syntaxhighlight>
إذا كنت تريد عرض مجموعة من البيانات مقسمة إلى أقسام منطقية، مع ترويسات أقسامٍ (section headers) اختياريّة على غرار UITableView على نظام التشغيل iOS ، فسيكون المكوّن ‎<code>SectionList</code>‎ الخيار الأنسب.
إذا كنت تريد عرض مجموعة من البيانات مقسمة إلى أقسام منطقية، مع ترويسات أقسامٍ (section headers) اختياريّة على غرار UITableView على نظام التشغيل iOS، فسيكون المكوّن ‎<code>SectionList</code>‎ الخيار الأنسب.
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
import React, { Component } from 'react';
import React, { Component } from 'react';
سطر 96: سطر 96:
AppRegistry.registerComponent('AwesomeProject', () => SectionListBasics);
AppRegistry.registerComponent('AwesomeProject', () => SectionListBasics);
</syntaxhighlight>
</syntaxhighlight>
عرضُ بياناتٍ تُجلَبُ من الخادم (server) أكثرُ الاستخدامات شيوعًا لعروض القوائم. وللقيام بذلك، ستحتاج لتعلّم كيفيّة التّعامل مع الشّبكات في React Native.
عرضُ بياناتٍ تُجلَبُ من الخادم (server) أكثرُ الاستخدامات شيوعًا لعروض القوائم. وللقيام بذلك، ستحتاج إلى تعلّم كيفيّة [[ReactNative/network|التّعامل مع الشّبكات في React Native.]]


== مصادر ==
== مصادر ==
* [https://facebook.github.io/react-native/docs/using-a-listview صفحة Using List Views في توثيق React Native الرسمي.]
* [https://facebook.github.io/react-native/docs/using-a-listview صفحة Using List Views في توثيق React Native الرسمي.]
[[تصنيف:ReactNative]]
[[تصنيف:ReactNative]]

مراجعة 12:16، 25 يناير 2019

عروض القوائم (List views)

يُوفِّر React Native مجموعةً من المكونات لتقديم قوائم البيانات. عمومًا، ستستخدم في تطبيقك إمّا FlatList أو SectionList لعرض القوائم.

يعرض مكوّن FlatList قائمةَ تمريرٍ لعرض البيانات التي تتغيَّر والتي تكون ذات شكلٍ منسّق وهيئة متشابهة. المكوّن FlatList فعّال وجيّد لعرض قوائم طويلة من البيانات التي قد يتغير فيها عدد العناصر بمرور الوقت. وعلى النّقيض من مكوّن ScrollView الأكثر عمومية فمُكوّن FlatList لا يُصيِّر إلى ما يُعرَض حاليًا على الشاشة وليس كل العناصر في وقت واحد، ما يُوفّر أداءً أفضل.

يتطلب مكوّن FlatList خاصيّتين اثنتين: ‎data‎ و‎renderItem‎، تُمثّل الخاصيّة ‎data‎ مصدر بيانات القائمة (كمصفوفة أسماءٍ مثلًا). وتأخذ الخاصيّة renderItem عنصرًا واحدًا من المصدر في كلّ مرّة وتُعيد مكوّنًا منسّقًا لتصييره.

ينشئ هذا المثال قائمةَ ‎FlatList‎ من بياناتٍ مُباشرَة (hardcoded). يُصيَّر كل عنصرٍ من عناصر الخاصيّة ‎data‎ داخل مُكوِّن ‎Text‎ نصيٍّ. بعدها يُصيِّر المكوّن FlatListBasics قائمةَ FlatList وجميع المكونات النصيّة.

import React, { Component } from 'react';
import { AppRegistry, FlatList, StyleSheet, Text, View } from 'react-native';

export default class FlatListBasics extends Component {
  render() {
    return (
      <View style={styles.container}>
        <FlatList
          data={[
            {key: 'Devin'},
            {key: 'Jackson'},
            {key: 'James'},
            {key: 'Joel'},
            {key: 'John'},
            {key: 'Jillian'},
            {key: 'Jimmy'},
            {key: 'Julie'},
          ]}
          renderItem={({item}) => <Text style={styles.item}>{item.key}</Text>}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
   flex: 1,
   paddingTop: 22
  },
  item: {
    padding: 10,
    fontSize: 18,
    height: 44,
  },
})

// skip this line if using Create React Native App
AppRegistry.registerComponent('AwesomeProject', () => FlatListBasics);

إذا كنت تريد عرض مجموعة من البيانات مقسمة إلى أقسام منطقية، مع ترويسات أقسامٍ (section headers) اختياريّة على غرار UITableView على نظام التشغيل iOS، فسيكون المكوّن ‎SectionList‎ الخيار الأنسب.

import React, { Component } from 'react';
import { AppRegistry, SectionList, StyleSheet, Text, View } from 'react-native';

export default class SectionListBasics extends Component {
  render() {
    return (
      <View style={styles.container}>
        <SectionList
          sections={[
            {title: 'D', data: ['Devin']},
            {title: 'J', data: ['Jackson', 'James', 'Jillian', 'Jimmy', 'Joel', 'John', 'Julie']},
          ]}
          renderItem={({item}) => <Text style={styles.item}>{item}</Text>}
          renderSectionHeader={({section}) => <Text style={styles.sectionHeader}>{section.title}</Text>}
          keyExtractor={(item, index) => index}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
   flex: 1,
   paddingTop: 22
  },
  sectionHeader: {
    paddingTop: 2,
    paddingLeft: 10,
    paddingRight: 10,
    paddingBottom: 2,
    fontSize: 14,
    fontWeight: 'bold',
    backgroundColor: 'rgba(247,247,247,1.0)',
  },
  item: {
    padding: 10,
    fontSize: 18,
    height: 44,
  },
})

// skip this line if using Create React Native App
AppRegistry.registerComponent('AwesomeProject', () => SectionListBasics);

عرضُ بياناتٍ تُجلَبُ من الخادم (server) أكثرُ الاستخدامات شيوعًا لعروض القوائم. وللقيام بذلك، ستحتاج إلى تعلّم كيفيّة التّعامل مع الشّبكات في React Native.

مصادر