Bir Next uygulamasında karmaşık durumları yönetirken, işler hızla zorlaşabilir. Gibi geleneksel kancalar kullanımDevlet devlet yönetimine yardımcı olur, ancak bir pervane sondajı sorunu sunar. Pervane sondajı, verilerin veya işlevlerin çeşitli bileşenlerden geçirilmesi anlamına gelir.
Durum yönetimi mantığınızı bileşenlerden ayırmak ve bu durumları uygulamanızın herhangi bir yerinden güncellemek daha iyi bir yaklaşım olacaktır. Basit bir yapılacaklar listesi uygulaması oluştururken, Bağlam API'sini nasıl kullanacağınız konusunda size yol göstereceğiz.
Yapılacaklar Listenize Başlamadan Önce
Yapılacaklar listesi uygulamasını oluşturmadan önce şunlara ihtiyacınız olacak:
temel bilgi modern JavaScript operatörleri Ve React'in useState kancası.
Nasıl yapılacağına dair bir anlayış JavaScript'te dizileri ve nesneleri yok etme.
düğüm Yerel makinenizde v16.8 veya üstü yüklü ve aşinalık npm gibi paket yöneticileri veya iplik.
Bitmiş projeyi adresinde bulabilirsiniz. GitHub referans ve daha fazla keşif için.
Uygulama durumu, bir uygulamanın belirli bir zamanda mevcut durumunu ifade eder. Buna, kullanıcı girişi ve bir veritabanından veya bir API'den (Uygulama Programlama Arayüzü) getirilen veriler gibi uygulamanın bildiği ve yönettiği bilgiler dahildir.
Uygulama durumunu anlamak için basit bir sayaç uygulamasının olası durumlarını göz önünde bulundurun. Onlar içerir:
varsayılan durum sayaç sıfır olduğunda.
Yükseltilmiş bir durum sayaç bir arttığında.
Azalmış bir durum sayaç bir azaldığında.
Bir sıfırlama durumu sayaç varsayılan durumuna döndüğünde.
Bir React bileşeni, durum değişikliklerine abone olabilir. Bir kullanıcı böyle bir bileşenle etkileşime girdiğinde, eylemleri (düğme tıklamaları gibi) durum güncellemelerini yönetebilir.
Bu snippet, varsayılan durumunda, tıklama eylemlerine dayalı olarak durumu yöneten basit bir sayaç uygulamasını gösterir:
sabit [sayaç, setCounter] = useState(0);
geri dönmek (
{karşı}/h1>
Kurulum ve Kurulum
Projenin deposu iki dal içerir: başlangıç Ve bağlam. Projeyi oluşturmak için başlangıç dalını temel olarak veya son demoyu önizlemek için bağlam dalını kullanabilirsiniz.
Başlangıç Uygulamasını Klonlama
Başlangıç uygulaması, son uygulama için ihtiyaç duyacağınız kullanıcı arayüzünü sağlar, böylece temel mantığın uygulanmasına odaklanabilirsiniz. Bir terminal açın ve deponun başlangıç dalını yerel makinenize klonlamak için aşağıdaki komutu çalıştırın:
Bağımlılıkları yüklemek ve geliştirme sunucunuzu başlatmak için proje dizini içinde aşağıdaki komutu çalıştırın:
yarn && yarn dev
Veya:
npm i && npm dev çalıştır
Her şey yolunda giderse, kullanıcı arayüzünün tarayıcınızda görüntülenmesi gerekir:
Mantığı Uygulamak
Bağlam API'si, manüel dikme delmeye gerek kalmadan durum verilerini bileşenler arasında yönetmenin ve paylaşmanın bir yolunu sunar.
1. Adım: Bağlam Oluşturun ve Dışa Aktarın
Oluşturmak kaynak/uygulama/bağlam bağlam dosyasını depolamak ve proje dizinini iyi organize etmek için klasör. Bu klasör içinde bir todo.context.jsx uygulama için tüm bağlam mantığını içerecek dosya.
içe aktar Bağlam oluştur işlevi tepki kütüphane ve onu çağırın, sonucu bir değişkende saklayın:
içe aktarmak {bağlam oluştur} itibaren"tepki"; sabit TodoContext = createContext();
Ardından, bir özel oluşturun useTodoContext dönen kanca TodoContext kullanılabilir şekliyle.
Uygulamanın CRUD (Oluştur, Oku, Güncelle, Sil) eylemlerini gerçekleştirmek için durumları oluşturmanız ve Sağlayıcı bileşen.
sabit TodoContextProvider = ({ çocuklar }) => { sabit [görev, setTask] = useState(""); sabit [görevler, setTasks] = useState([]); geri dönmek<TodoContext. Sağlayıcıdeğer={{}}>{çocuklar}TodoContext. Sağlayıcı>; };
ihracatvarsayılan TodoContextSağlayıcı;
hemen önce geri dönmek deyimi, oluşturmak koluYapılacakGiriş kullanıcı bir yapılacak iş yazdığında çalışacak işlev. Bu işlev daha sonra görev durum.
sabit handleTodoInput = (giriş) => görev ayarla (giriş);
Ekle görev oluştur bir kullanıcı bir yapılacak iş gönderdiğinde çalışacak işlev. Bu fonksiyon günceller görevler durum ve yeni göreve rastgele bir kimlik atar.
sabit görev oluştur = (e) => { e.preventDefault();
Adım 3: Sağlayıcıya Durumlar ve İşleyiciler Ekleyin
Artık durumları oluşturdunuz ve bunları yönetmek için kod yazdınız, bu durumları ve işleyici işlevlerini kullanıcının kullanımına sunmanız gerekir. Sağlayıcı. kullanarak bunları bir nesne biçiminde sağlayabilirsiniz. değer mülkiyeti Sağlayıcı bileşen.
geri dönmek ( değer={{ görev, görevler, işlenecekTodoInput, görev oluştur, güncellemeGörevi, silmeGörevi, }} > {çocuklar} </TodoContext.Provider> );
4. Adım: Bağlamı Kapsamlayın
bu Sağlayıcı Bağlamı uygulamanın tamamı için kullanılabilir hale getirmek için oluşturduğunuz üst düzey bileşeni sarmanız gerekir. Bunu yapmak için düzenleyin src/uygulama/sayfa.jsx ve sarın Yapılacak işler ile bileşen TodoContextProvider bileşen:
; </TodoContextProvider>;
5. Adım: Bileşenlerde Bağlamı Kullanın
Düzenle src/app/components/Todos.jsx dosya ve imha görevler, görev, koluYapılacakGiriş, Ve görev oluştur telefonla arayarak useTodoContext işlev.
sabit { görev, görevler, handleTodoInput, createTask } = useTodoContext();
Şimdi, gönderme olayını ve ana giriş alanındaki değişiklikleri işlemek için form öğesini güncelleyin:
6. Adım: Görevleri Kullanıcı Arayüzünde Oluşturun
Artık uygulamayı bir görev oluşturmak ve görev eklemek için kullanabilirsiniz. görevler liste. Görüntüyü güncellemek için, mevcut görevler ve bunları kullanıcı arayüzünde oluşturun. İlk önce bir oluştur src/app/components/Todo.jsx tek bir yapılacak iş öğesini tutmak için bileşen.
İçinde src/app/components/Todo.jsx çağırarak bir görevi düzenleyin veya silin. güncellemeGörevi Ve silGörev oluşturduğumuz fonksiyonlar src/app/context/todo.context.jsx dosya.
işlemek için src/app/components/Todo.jsx her biri için bileşen görev, içine git src/app/components/Todos.jsx dosya ve aracılığıyla koşullu eşleme görevler hemen sonra başlık kapanış etiketi.
Uygulamanızı bir tarayıcıda test edin ve beklenen sonucu verdiğini onaylayın.
Görevleri Yerel Depolama Alanına Kaydetme
Şu anda, sayfayı yenilemek, oluşturduğunuz görevleri atarak görevleri sıfırlayacaktır. Bu sorunu çözmenin bir yolu, görevleri tarayıcının yerel deposunda depolamaktır.
Web depolama API'si, hem kullanıcılar hem de geliştiriciler için deneyimi iyileştiren özelliklere sahip, çerez depolamada bir gelişmedir.