In diesem Artikel werden wir untersuchen, wie wir eine automatische Speicherfunktion mit Javascript und ReactJS implementieren können. Die Funktionen zum automatischen Speichern sind praktisch, wenn die Anwendung den vom Benutzer eingegebenen Inhalt automatisch speichern möchte. Anwendungen wie Online-Formulare, Excel usw. benötigen solche Funktionen zum automatischen Speichern.
Sie benötigen einige Grundkenntnisse in Javascript und React (v16), um die unten erwähnte Implementierung im Detail zu verstehen.
Der Einfachheit halber haben wir hier den Online-Code-Editor StackBlitz verwendet , um ein einfaches ReactJS-Projekt zu erstellen. Der Code ist am Ende dieses Artikels als Referenz verfügbar.
Das Projekt wird wie folgt umgesetzt:
src/index.jsist die Root -Datei. Es importiert src/App.jsDateien und rendert deren Inhalt.
src/App.jshat die Kernlogik, die Benutzereingaben zu verarbeiten und den Inhalt automatisch im sessionStorage des Browsers zu speichern . src/App.jsimportiert src/components/customInput/CustomInput.jsKomponente und wird zum Empfangen von Benutzereingaben verwendet.
Wie im Abschnitt Projektordnerstruktur erwähnt, istApp.js die Kernkomponente für die Verarbeitung von Benutzereingaben (erhalten von CustomInput.js) und das (automatische) Speichern von Inhalten in sessionStorage verantwortlich.
//App.js
import React, { useState, useRef } from 'react';
import CustomInput from './components/customInput/CustomInput';
import './style.css';
// Save action will be triggered after SAVE_AFTER_MS milliseconds have passed since user's last input.
const SAVE_AFTER_MS = 1000;
export default function App() {
const [inputValue, setInputValue] = useState(() => '');
const [isSaving, setIsSaving] = useState(() => false);
const autoSaveTimer = useRef(); //Using ref would help to retain timer value between component re-renders.
const handleInput = (e) => {
const {
target: { value = '' },
} = e;
setInputValue(value);
if (autoSaveTimer.current) {
//If user inputs before the specified delay has ended then cancel perviously saved timer
clearTimeout(autoSaveTimer.current);
}
setIsSaving(true);
autoSaveTimer.current = setTimeout(() => {
sessionStorage.setItem('draft', value);
clearTimeout(autoSaveTimer.current);
setIsSaving(false);
}, SAVE_AFTER_MS);
};
return (
<div>
<h1>Auto-save Implementation</h1>
<span class="alignText">
<p>Draft Status: </p>
<p class={isSaving ? 'orangeText' : 'greenText'}>
{isSaving ? 'Saving... ' : 'Saved'}
</p>
</span>
<CustomInput value={inputValue} onChange={handleInput} />
<span class="alignText">
<p>Saved draft to storage: </p>
<p>{sessionStorage.getItem('draft')}</p>
</span>
</div>
);
}
//CustomInput.js
import React from 'react';
import styles from './CustomInput.module.css';
const CustomInput = ({
type = 'text',
placeholder = 'Enter text',
onChange,
value = '',
...props
}) => {
return (
<input
type={type}
placeholder={placeholder}
onChange={onChange}
value={value}
className={styles.inputRoot}
{...props}
/>
);
};
export default CustomInput;
App.jsempfängt die Funktion handleInput den Benutzereingabewert und aktualisiert die Zustandsvariable inputValue .() => {
sessionStorage.setItem('draft', value);
clearTimeout(autoSaveTimer.current);
setIsSaving(false);
}
PS Wenn Ihnen der Inhalt gefallen hat, halten Sie Ihre Klatschen nicht zurück. Wenn Sie Fragen / Vorschläge haben, können Sie diese gerne in den Kommentaren unten hinzufügen.
Vielen Dank fürs Lesen.
Einleitung Ein Schlaganfall ist ein medizinischer Notfall, der jeden jederzeit treffen kann. Sie tritt auf, wenn die Durchblutung eines Teils des Gehirns gestört ist, was zu einem plötzlichen Verlust der Gehirnfunktion führt.
Diese Woche erhielt ich eine E-Mail von einem Mitglied der täglichen E-Mail-Liste. Sie wollten wissen: Welche Ressourcen besuchen Sie täglich, wöchentlich und monatlich? Tolle Frage! Ich versuche gerne, einige Einblicke in meinen Arbeitsablauf und die wichtigsten Ressourcen, die ich verwende, mit Ihnen zu teilen.
Sie können ein OSINT-Ermittler, ein CTF-Spieler oder einfach jemand sein, der Spam-Anrufe erhält. Jemand, der versucht, die Nummer zu bestätigen, die Sie in einer Anzeige gesehen haben.
Der Juckreiz in meiner Hand breitete sich aus, als ich mit dem örtlichen Buchhändler um ein weiteres Buch verhandelte. Dieses Buch würde wie die anderen, die ich kürzlich gekauft habe, seinen Thron auf meinem Stapel „To Be Read“ (TBR) finden; und trotzdem habe ich es gekauft.
„Hey Siri, spiel Me Dive von Olivia Dean.“ Es war Mai 2021, als ich mein Praktikum bei der Future Academy Africa in Akure, Nigeria, begann.
Es ist ein strahlend goldener Morgen in den sanften Hügeln des Westens, während die ersten Sonnenstrahlen das gefrorene Gras auf den Ebenen erhellen. Eine Herde friedlicher Angus-Rinder, pechschwarz und massig, zeichnet sich vor dem Sonnenaufgang ab, während sie einen ausgetretenen Pfad entlang zu einem Ort geht, den sie alle gut kennen; die Frühstücksbar.