الفرق بين المراجعتين ل"ReactNative/using a listview"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة)
 
(4 مراجعات متوسطة بواسطة 3 مستخدمين غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:استخدام عروض القوائم في React Native}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:عرض البيانات في قوائم في React Native}}</noinclude>
==عروض القوائم (List views)==
+
يُوفِّر React Native مجموعةً من المكوّنات لعرض البيانات في قوائم. ستستخدم في تطبيقك إمّا <code>[[ReactNative/flatlist|FlatList]]</code> أو <code>[[ReactNative/sectionlist|SectionList]]</code> لعرض القوائم عمومًا.
يُوفِّر React Native مجموعةً من المكونات لتقديم قوائم البيانات. عمومًا، ستستخدم في تطبيقك إمّا <code>[[ReactNative/flatlist|FlatList]]</code> أو <code>[[ReactNative/sectionlist|SectionList]]</code> لعرض القوائم.
 
  
يعرض مكوّن <code>FlatList</code> قائمةَ تمريرٍ لعرض البيانات التي تتغيَّر والتي تكون ذات شكلٍ منسّق وهيئة متشابهة. المكوّن <code>FlatList</code> فعّال وجيّد لعرض قوائم طويلة من البيانات التي قد يتغير فيها عدد العناصر بمرور الوقت. وعلى النّقيض من مكوّن <code>[[ReactNative/scrollview|ScrollView]]</code> الأكثر عمومية فمُكوّن <code>FlatList</code>  لا يُصيِّر إلى ما يُعرَض حاليًا على الشاشة وليس كل العناصر في وقت واحد، ما يُوفّر أداءً أفضل.
+
يعرض المكوّن <code>FlatList</code> قائمةَ تمريرٍ لعرض البيانات متغيّرة لكنها تتشابه في البنية. المكوّن <code>FlatList</code> فعّال وجيّد لعرض قوائم طويلة من البيانات التي قد يتغير فيها عدد العناصر بمرور الوقت. ولا يصيّر المُكوّن <code>FlatList</code> إلّا ما يُعرَض حاليًا على الشاشة وليس العناصر كلها في وقتٍ واحدٍ على النّقيض من مكوّن <code>[[ReactNative/scrollview|ScrollView]]</code> الأكثر عمومية، مما يُوفّر أداءً أفضل.
  
يتطلب مكوّن <code>FlatList</code> خاصيّتين اثنتين: ‎<code>data</code>‎ و‎<code>renderItem</code>‎، تُمثّل الخاصيّة ‎<code>data</code>‎ مصدر بيانات القائمة (كمصفوفة أسماءٍ مثلًا). وتأخذ الخاصيّة <code>renderItem</code> عنصرًا واحدًا من المصدر في كلّ مرّة وتُعيد مكوّنًا منسّقًا لتصييره.
+
يتطلب مكوّن <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>‎ نصيٍّ. بعدها يُصيِّر المكوّن <code>FlatListBasics</code> قائمةَ <code>FlatList</code> وجميع المكونات النصيّة.
+
ينشئ هذا المثال قائمةَ ‎<code>FlatList</code>‎ من بياناتٍ مُباشرَة (hardcoded)، ويُصيَّر كل عنصرٍ من عناصر الخاصيّة ‎<code>data</code>‎ داخل مُكوِّن ‎<code>Text</code>‎ نصيٍّ، ثم يُصيِّر المكوّن <code>FlatListBasics</code> قائمةَ <code>FlatList</code> وجميع المكونات النصيّة <code>Text</code>.
 +
 
 +
انظر المثال التالي عن <code>FlatList</code> ([https://snack.expo.dev/@hsoubwiki/flatlist-basics تجربة حية]):
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
import React, { Component } from 'react';
+
import React from 'react';
import { AppRegistry, FlatList, StyleSheet, Text, View } from 'react-native';
+
import { 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({
 
const styles = StyleSheet.create({
سطر 44: سطر 23:
 
     height: 44,
 
     height: 44,
 
   },
 
   },
})
+
});
 +
 
 +
const FlatListBasics = () => {
 +
  return (
 +
    <View style={styles.container}>
 +
      <FlatList
 +
        data={[
 +
          {key: 'Devin'},
 +
          {key: 'Dan'},
 +
          {key: 'Dominic'},
 +
          {key: 'Jackson'},
 +
          {key: 'James'},
 +
          {key: 'Joel'},
 +
          {key: 'John'},
 +
          {key: 'Jillian'},
 +
          {key: 'Jimmy'},
 +
          {key: 'Julie'},
 +
        ]}
 +
        renderItem={({item}) => <Text style={styles.item}>{item.key}</Text>}
 +
      />
 +
    </View>
 +
  );
 +
}
  
// skip this line if using Create React Native App
+
export default FlatListBasics;
AppRegistry.registerComponent('AwesomeProject', () => FlatListBasics);
 
 
</syntaxhighlight>
 
</syntaxhighlight>
إذا كنت تريد عرض مجموعة من البيانات مقسمة إلى أقسام منطقية، مع ترويسات أقسامٍ (section headers) اختياريّة على غرار UITableView على نظام التشغيل iOS، فسيكون المكوّن ‎<code>SectionList</code>‎ الخيار الأنسب.
+
إذا كنت تريد عرض مجموعة من البيانات المقسمة إلى أقسام منطقية، مع ترويسات أقسامٍ (section headers) اختياريّة على غرار <code>UITableView</code> على نظام التشغيل iOS، فسيكون المكوّن ‎<code>SectionList</code>‎ الخيار الأنسب.
 +
 
 +
انظر المثال التالي عن <code>SectionList‎</code> ([https://snack.expo.dev/@hsoubwiki/sectionlist-basics تجربة حية]):
 
<syntaxhighlight lang="javascript">
 
<syntaxhighlight lang="javascript">
import React, { Component } from 'react';
+
import React from 'react';
import { AppRegistry, SectionList, StyleSheet, Text, View } from 'react-native';
+
import { 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({
 
const styles = StyleSheet.create({
سطر 93: سطر 77:
 
})
 
})
  
// skip this line if using Create React Native App
+
const SectionListBasics = () => {
AppRegistry.registerComponent('AwesomeProject', () => SectionListBasics);
+
    return (
 +
      <View style={styles.container}>
 +
        <SectionList
 +
          sections={[
 +
            {title: 'D', data: ['Devin', 'Dan', 'Dominic']},
 +
            {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>
 +
    );
 +
}
 +
 
 +
export default SectionListBasics
 
</syntaxhighlight>
 
</syntaxhighlight>
عرضُ بياناتٍ تُجلَبُ من الخادم (server) أكثرُ الاستخدامات شيوعًا لعروض القوائم. وللقيام بذلك، ستحتاج إلى تعلّم كيفيّة [[ReactNative/network|التّعامل مع الشّبكات في 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]]
 +
[[تصنيف:React Native Docs]]

المراجعة الحالية بتاريخ 13:33، 9 أكتوبر 2021

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

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

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

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

انظر المثال التالي عن FlatList (تجربة حية):

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

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

const FlatListBasics = () => {
  return (
    <View style={styles.container}>
      <FlatList
        data={[
          {key: 'Devin'},
          {key: 'Dan'},
          {key: 'Dominic'},
          {key: 'Jackson'},
          {key: 'James'},
          {key: 'Joel'},
          {key: 'John'},
          {key: 'Jillian'},
          {key: 'Jimmy'},
          {key: 'Julie'},
        ]}
        renderItem={({item}) => <Text style={styles.item}>{item.key}</Text>}
      />
    </View>
  );
}

export default FlatListBasics;

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

انظر المثال التالي عن SectionList‎ (تجربة حية):

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

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,
  },
})

const SectionListBasics = () => {
    return (
      <View style={styles.container}>
        <SectionList
          sections={[
            {title: 'D', data: ['Devin', 'Dan', 'Dominic']},
            {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>
    );
}

export default SectionListBasics

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

مصادر