2016-03-23 13 views
7

Bir nodejs sunucusunun push olaylarını socket.io aracılığıyla tepki panosuna gönderdiği bir projem var, Redux kullanıyorum. Yeni veri alındığında, ilgili tüm bileşenleri güncellemek için bir eylem başlatılır, ancak bu şekilde yaptığımın doğru olduğundan emin değilim.Redux ile bir bileşene bağlı olmayan bir eylemi göndermenin doğru yolu nedir?

Ben sunucusundan gelen yeni veriler için nasıl izlediğimizi budur:

socket.on('incidents', state => { 
    boundActionSetIncidentsList(state); 
    }); 

Ve bu yeni verilere çağrılır sınırlı eylem yaratıcısı:

import { store } from '../index'; 

    export function boundActionSetIncidentsList(incidents) { 
    store.dispatch(actionSetIncidentsList(incidents)); 
    } 

Ben mağaza ihtiyaç eylemi göndermek için sipariş, ben brutally ana index.js ana ithal ediyorum. Bu oluşturulduğu nasıl:

export const store = createStore(); 

tepki ve redux bir konteyner veya sunum bileşenden tetiklenir verilmeyen işlemler sevk ait redux yönlü ne olduğunu merak ediyorum çok yeni olmak. Teşekkür ederim!!

cevap

2

Soket dinleyicisini oluşturan kodu, deposu argüman olarak alan bir işlev olarak sarabilirsiniz. En azından, müşteri ana rutininiz, hazır olduğunda depoyu kurabilir ve soket dinleyicisine iletebilir.

Yardım için bir kütüphane kullanmayı da deneyebilirsiniz. İşte sunucusu veri gönderdiğinde otomatik olarak deposuna eylemleri sevk edebilir bazı redux ara yazılımdır:

https://github.com/itaylor/redux-socket.io

+0

Gerçekten de, bir ara katman kullanmanın kesinlikle daha zarif olmasına rağmen, kaydırma aslında ilerlemenin en kolay yoludur. – Slartibartfast

2

Genel öneri daki soket bağlantısı yönetmek olacaktır ya da mağazanın en dispatch erişimi olan bir Redux katman (yöntem) veya bileşenin mount/unmount üzerindeki soketini işleyen bir React bileşeninde ve dispatch'a erişmek için React-Redux connect işlevini kullanabilir (ya da soket olaylarıyla kullanmak için eylem oluşturucularını önceden bağlama).

İlgili konular