Aktif olarak kendim hiç kullanmadım ama sanıyorum vuejs'deki vuex muadili oluyor. Muhtemelen redux daha önceden çıkmış vue tarafından da kullanılıyor olma durumu var. Ben kısaca anlatmaya çalışayım ve güzel anlatan bir referans vereyim.
Object oriented programlamada sık sık karşımıza gelen bir sorun vardır. OOP üzerinden ilerleyerek anlatayım anlaması daha rahat olur. En azından bana öyle geldi. Elinde birkaç tane obje var ve bunlardan bazıları aynı bilgiye ulaşmak istiyor. Hemen ufak bir şekil çizelim.
Şimdi elindeki bilgiyi obje1 obje2 ve obje3 e nasıl göndereceksin gibi bir soru çıkıyor. Bu sorunun cevabı için kendi kendine yöntemler geliştirebilirsin ve içinde bulunduğun context (uygulama yapısı diyeyim) sana bazı kolaylıklar sağlıyor olabilir. Temeline indiğin zaman iki farklı yaklaşım karşına çıkar. Mesala dümdüz java için konuşalım. İlki ortan erişim olan bir alan belirlemek. Bir sınıf içine bilgiyi static bir değer olarak tanımlayıp hepsinden ulaşabilirsin. En basit ve etkili yöntem uygulamaya göre işe yarayabilir veya başına bir sürü sorun açabilir. O kısmına girmeyeyim keza şimdilik işimizi görüyor.
....
BizimStaticSınıf.bilgi = new BizimBilgi()
BizimObje obje1 = new BizimObje();
BizimObje obje2 = new BizimObje();
BizimObje obje3 = new BizimObje();
....
BizimStaticSınıf.bilgi.birşeylerYap()
Bu şekilde objelerin hepsi bilgiye staticsınıf üzerinden ulaşabilir ve birşeyler yaptırabilir.
Şimdi başka bir yaklaşıma bakalım. Zincirleme olarak referansı birbirine paslamak.
Uygulama yapısından isole bir şekilde en bariz çözüm yöntemi objelerin constructor kısmında veya herhangi uygun bir kısmında objeye elindeki bilgiyi parametre olarak geçmek. Hemen örnek bakalım
...
BizimBilgi bilgi = new Bilgi();
BizimObje obje1 = new BizimObje(bilgi);
BizimObje obje2 = new BizimObje(bilgi);
BizimObje obje3 = new BizimObje(bilgi);
....
Sarı R olanlar referans oluyor. Bu şekilde de bilgiye ulaşımı sağladın. Objelerin içinede rahat rahat kullanabilirsin. JS tarafında genelde bu ikinci insanların aklına daha çok geliyor (öyle sanıyorum). Elinde 3 tane sınıf varsa bu bir sorun olmayacaktır. Ama elindeki sınıflar onları daha sonrasında yüzleri bulduğu zaman neyi, ne zaman, nasıl birbirine göndereceğin sorun olup karmakarışık bir duruma gelmeye başlıyor. Aslında tipik olarak üstteki yöntem çok daha kolay hale gelmeye başlıyor, keza bence de öyle. Bir de bu işlemi ortak ulaşılması gereken bütün kod altyapısı için düşünürsek daha da önem kazanıyor. Facebook'da bu işlemi anladığım kadarıyla zor yoldan bir tecrübe etti ve sonrasında şu üstteki yöntemi baz alarak bir yaklaşım geliştirme yoluna gitti. Artık redux (vue için vuex) BizimStaticSınıf'ın yerini alıp işlemlerin sahibi konumuna geçti.
Temel olarak bu problemin nasıl çözüleceğinin cevabı redux oluyor. İkinci yöntem işe yaramaz mı? Tabiki yarar. Her soruda neredeyse söylediğim gibi biri diğeri yerine kullanılabilir. Hangisini ne zaman kullanmak istediğin/kararın senin programcılık tecrüben arttıkça daha açık olmaya başlayacak. Kısaca sana bağlı.
Biraz daha redux'u incelemek istiyorum dersen senin cevabın aşağıdaki linkte. Keza benim çok tecrübem yok. Devnot'dan Zafer Ayan açıklamış. Ben açıklamayı da beğendim.
http://devnot.com/2018/redux-nedir/