Skip to content
Snippets Groups Projects
Commit 39aafcbf authored by isaacwsolomon's avatar isaacwsolomon
Browse files

Implemented flatlist

parent c0b9600a
No related branches found
No related tags found
No related merge requests found
import { addDoc, collection, onSnapshot } from 'firebase/firestore'; import { addDoc, collection, onSnapshot } from 'firebase/firestore';
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import { View, Text, Button, TextInput, StyleSheet } from 'react-native'; import { View, Text, Button, TextInput, StyleSheet, FlatList } from 'react-native';
import { FIRESTORE_DB } from '../../firebaseConfig'; import { FIRESTORE_DB } from '../../firebaseConfig';
export interface Todo {
title: string;
done: boolean;
id: string;
}
const List = ({navigation} : any) => { const List = ({navigation} : any) => {
const[todos, setTodos] = useState<any[]>([]); const[todos, setTodos] = useState<Todo[]>([]);
const[todo, setTodo] = useState(''); const[todo, setTodo] = useState('');
useEffect(() => { useEffect(() => {
const todoRef = collection(FIRESTORE_DB, 'todos'); const todoRef = collection(FIRESTORE_DB, 'todos');
...@@ -13,14 +18,13 @@ useEffect(() => { ...@@ -13,14 +18,13 @@ useEffect(() => {
const subscribe = onSnapshot(todoRef, { const subscribe = onSnapshot(todoRef, {
next: (snapshot) => { next: (snapshot) => {
console.log('UPDATED'); console.log('UPDATED');
const todos: any[]= []; const todos: Todo[]= [];
snapshot.docs.forEach((doc) => { snapshot.docs.forEach((doc) => {
todos.push({ todos.push({
id: doc.id, id: doc.id,
...doc.data() ...doc.data()
}) } as Todo)
}) })
setTodos(todos); setTodos(todos);
}, },
...@@ -37,6 +41,11 @@ const addTodo = async () => { ...@@ -37,6 +41,11 @@ const addTodo = async () => {
setTodo(''); setTodo('');
}; };
const renderTodo = ({item}: any) => {
return(
<Text> {item.title}</Text>
)
}
return ( return (
<View style ={styles.container}> <View style ={styles.container}>
<View style={styles.form}> <View style={styles.form}>
...@@ -45,6 +54,15 @@ return ( ...@@ -45,6 +54,15 @@ return (
value={todo}/> value={todo}/>
<Button onPress={addTodo} title="Add Todo"disabled={todo === ''}/> <Button onPress={addTodo} title="Add Todo"disabled={todo === ''}/>
</View> </View>
{todos.length > 0 && (
<View>
<FlatList
data={todos}
renderItem={renderTodo}
keyExtractor={(todo: Todo) => todo.id}
/>
</View>
)}
<View> <View>
{todos.map((todo) => ( {todos.map((todo) => (
<Text key={todo.id}>{todo.title}</Text> <Text key={todo.id}>{todo.title}</Text>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment