CodeBlanks Logo Icon CodeBlanks

Görev listesi

FlatList ile görev listesi yazarsın.

FlatList ile görev listesi

Görevleri ekranda göstermek için FlatList kullanılır. Üç prop alır: data diziyi, renderItem her öğeyi nasıl çizeceğini, keyExtractor her öğenin benzersiz anahtarını döndürür. FlatList yalnızca ekranda görünen öğeleri render eder; binlerce öğe olsa bile akıcı kalır.

Örnek: <FlatList data={tasks} renderItem={({ item }) => <Text>{item.text}</Text>} keyExtractor={(item) => item.id} />. renderItem bir nesne alır; bu nesnenin item özelliği dizideki bir görevdir. keyExtractor ise benzersiz anahtar için item.id'yi döndürür.

Uygulama FlatList ekle

Listeye bir FlatList ekle. data={tasks}, renderItem={({ item }) => <Text>{item.text}</Text>}, keyExtractor={(item) => item.id} olsun. Düğmenin altına koy.

Başlangıç kodu

App.js
import React from 'react';
import { SafeAreaView, View, Text, TextInput, Button, FlatList, StyleSheet } from 'react-native';

export default function App() {
  const [task, setTask] = React.useState('');
  const [tasks, setTasks] = React.useState([]);
  const addTask = () => {
    setTasks([...tasks, { id: Date.now().toString(), text: task, done: false }]);
    setTask('');
  };
  return (
    <SafeAreaView style={styles.container}>
      <Text>Yapılacaklar</Text>
      <TextInput placeholder="Yeni görev" value={task} onChangeText={setTask} />
      <Button title="Ekle" onPress={addTask} />
      {/* görev listesini buraya ekle */}
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: { flex: 1, padding: 16 }
});

Örnek çözüm

App.js
import React from 'react';
import { SafeAreaView, View, Text, TextInput, Button, FlatList, StyleSheet } from 'react-native';

export default function App() {
  const [task, setTask] = React.useState('');
  const [tasks, setTasks] = React.useState([]);
  const addTask = () => {
    setTasks([...tasks, { id: Date.now().toString(), text: task, done: false }]);
    setTask('');
  };
  return (
    <SafeAreaView style={styles.container}>
      <Text>Yapılacaklar</Text>
      <TextInput placeholder="Yeni görev" value={task} onChangeText={setTask} />
      <Button title="Ekle" onPress={addTask} />
      <FlatList
        data={tasks}
        renderItem={({ item }) => <Text>{item.text}</Text>}
        keyExtractor={(item) => item.id}
      />
    </SafeAreaView>
  );
}

const styles = StyleSheet.create({
  container: { flex: 1, padding: 16 }
});

renderItem deseni

renderItem bir ok fonksiyonudur ve parametre olarak bir nesne alır. Bu nesnenin en sık kullanılan özelliği item'dır; o anki dizi öğesini verir. Yapı: renderItem={({ item }) => ...}. Süslü parantez within süslü parantez JavaScript'te nesne ayırma (destructuring) kalıbıdır.

İçeride dilediğin bileşeni döndürebilirsin: bir Text, bir View ya da bir TouchableOpacity. Örneğin renderItem={({ item }) => <Text>{item.text}</Text>} her görevin metnini gösterir. İleride item.done'ı kullanarak tamamlanan görevlerin üzerini çizeceksin.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 FlatList'te benzersiz anahtar neyle verilir?

App.js
<FlatList
  data={tasks}
  renderItem={...}
  ???={(item) => item.id}
/>
  • keyExtractor Doğru cevap
  • id
  • uniqueKey
  • key

Açıklama: keyExtractor her öğenin benzersiz anahtarını döndürür.

2 keyExtractor gövdesini yaz

Soru
keyExtractor={(item) =>____}
Cevap
keyExtractor={(item) =>item.id}

Açıklama: keyExtractor item.id döndürür; bu benzersizdir.

3 FlatList prop'unu işlevine eşle

Kavram Anlamı
data Listelenecek dizi
renderItem Her öğeyi çizen işlev
keyExtractor Benzersiz anahtar üretir
item O anki öğe

Başlangıç bölümündeki tüm dersler