-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNoteScreen.js
96 lines (83 loc) · 3.43 KB
/
NoteScreen.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import React, { useState, useEffect } from 'react';
import { View, Text, TextInput, Button, FlatList } from 'react-native';
import * as SQLite from 'expo-sqlite';
// Abrir o crear una base de datos SQLite llamada 'notes.db'
const db = SQLite.openDatabase('notes.db');
export default function NoteScreen() {
const [note, setNote] = useState('');
const [notes, setNotes] = useState([]);
// Configuración inicial: creación de la tabla si no existe
useEffect(() => {
db.transaction(tx => {
// Crear la tabla 'notes' si no existe, con una columna 'id' (clave primaria) y 'text'
tx.executeSql(
'create table if not exists notes (id integer primary key not null, text text);'
);
});
// Cargar las notas existentes desde la base de datos al montar el componente
fetchNotes();
}, []);
// Función para cargar las notas desde la base de datos
const fetchNotes = () => {
db.transaction(tx => {
// Consulta SQL para seleccionar todas las notas de la tabla 'notes'
tx.executeSql('select * from notes;', [], (_, { rows }) => {
// Extraer los resultados y actualizar el estado 'notes'
const data = rows._array;
setNotes(data);
});
});
};
// Función para agregar una nueva nota a la base de datos
const addNote = () => {
db.transaction(tx => {
// Insertar una nueva nota con el texto proporcionado en el estado 'note'
tx.executeSql('insert into notes (text) values (?);', [note], () => {
// Limpiar el estado 'note' y volver a cargar las notas actualizadas
setNote('');
fetchNotes();
});
});
};
// Función para eliminar una nota de la base de datos por su ID
const deleteNote = id => {
db.transaction(tx => {
// Eliminar la nota con el ID proporcionado de la tabla 'notes'
tx.executeSql('delete from notes where id = ?;', [id], () => {
// Volver a cargar las notas actualizadas después de la eliminación
fetchNotes();
});
});
};
return (
<View>
<Text>Notas</Text>
<TextInput
placeholder="Escribe una nota..."
value={note}
onChangeText={text => setNote(text)}
/>
<Button title="Agregar Nota" onPress={addNote} />
<FlatList
data={notes}
keyExtractor={item => item.id.toString()}
renderItem={({ item }) => (
<View>
<Text>{item.text}</Text>
<Button title="Eliminar" onPress={() => deleteNote(item.id)} />
</View>
)}
/>
</View>
);
}
/* Inicialización de la base de datos: Se crea una base de datos SQLite llamada 'notes.db' usando SQLite.openDatabase.
Esta base de datos se utilizará para almacenar las notas.
Configuración inicial: Dentro de useEffect, se ejecuta una transacción SQL para crear la tabla 'notes' si no existe.
La tabla tiene una columna 'id' como clave primaria y una columna 'text' para almacenar el texto de la nota.
fetchNotes: Esta función se utiliza para consultar todas las notas de la base de datos y actualizar el estado 'notes' con los resultados.
addNote: Permite agregar una nueva nota a la base de datos.
Se ejecuta una transacción SQL para insertar la nota en la tabla 'notes'. Luego, se limpia el estado 'note' y se vuelve a cargar la lista de notas.
deleteNote: Elimina una nota existente por su ID. Similar a addNote,
se ejecuta una transacción SQL para eliminar la nota y luego se actualiza la lista de notas.
*/