Die Datenquelle kann die aktuelle Uhrzeit, die Websocket-Verbindung des Servers, die Tastatureingabe, die Änderung der Geolokalisierung, die Änderung des Verlaufsroutings usw. sein.
Sie können verstehen, woher dieses Setup und keyEvent stammen und wie Sie es schreiben, wenn es sich um einen Websocket oder etwas anderes handelt.
setup und keyEvent sind Schlüssel, die vorübergehend unbrauchbar sind und eine beliebige Zeichenfolge sein können.
Das heißt, dieser Schlüssel wird nur verwendet, um dem Entwickler zu helfen, eine bestimmte Art von Funktion hier zu markieren. Er übergibt nur Versand und Verlauf, und der spezifische Überwachungscode erfordert eine bestimmte Bibliothek eines Drittanbieters, um die Überwachung zu implementieren.
Ist mein Verständnis richtig?
Ja, hier wird das Schlüssel- / Wertformat verwendet. Derzeit dient es hauptsächlich dazu, das Format mit Effekten und Reduzierungen in Einklang zu bringen. Später wird die Funktion zur Kündigung von Abonnements unterstützt und der Schlüssel wird verwendet.
Ich verstehe, danke.
Aber ich denke, ich kann diesen Dokumenten die Bedeutung der obigen Diskussion hinzufügen. Möglicherweise stoßen Sie auf dasselbe Problem wie ich :)
Abonnements definieren lediglich einen Ort zum Abonnieren von Daten. Anschließend werden der Versand und der Verlauf übergeben. Zum Abonnieren oder Überwachen ist eine Klassenbibliothek eines Drittanbieters erforderlich. Ist das Verständnis? Versand ist der Versand im Speicher von Redux, und Verlauf ist der Verlauf im React-Router, ist das verstanden?
@ roc2539 Ja.
Kann ich in Abonnements auf den Inhalt von Status oder Requisiten im Setup zugreifen?
@gzbigegg Nein, lösen Sie die Aktion aus und lassen Sie den Effekt damit umgehen.
subscriptions: {
setup ({ dispatch }) {
dispatch({ type: 'query' })
}
}
Es gibt zwei Fragen: Ich weiß nicht, ob es richtig ist. Das Dokument besagt, dass Ulme noch nie mit ihnen in Kontakt gekommen ist, und ich verstehe Abonnements nicht sehr klar.
Ich würde gerne einige Abonnementbeispiele wie Websocket sehen
So disptchieren Sie zwei Aktionen im Setup
Es gibt kein klares Dokument über die Timing- und Injection-Parameter des Rückrufs in der Abonnementregistrierung @ roc2539. Können Sie es beantworten?
Nach dem Wechsel zur Hash-Route kann das Setup die Änderung der URL-Eingabe über die Tastatur nicht überwachen.
Die Verwendung von browserHistory ist jedoch in Ordnung.
setup ({ dispatch }) {
console.log('models-app') // 手动改变url地址,不会进此方法
dispatch({ type: 'query' })
},
Versuchte die Steckdose, nur als Referenz.
// model
import * as service from '../services/socket';
subscriptions: {
socket({dispatch}){ // socket相关
return service.listen(data => {
switch (data.type) {
case 'connect':
if (data.state === 'success') {
dispatch({
type: 'connectSuccess'
})
} else {
dispatch({
type: 'connectFail'
})
}
break;
case 'welcome':
dispatch({
type: 'welcome'
});
break;
}
})
}
},
// services
import io from 'socket.io-client';
let socket = '';
export function listen(action) {
if (socket === '') {
try {
socket = io("localhost:3000");
action({
type: 'connect',
state: 'success'
});
} catch (err) {
action({
type: 'connect',
state: 'fail'
});
}
}
socket.on('welcome', () => {
action({
type: 'welcome'
})
})
}
Ich habe versucht herauszufinden, wie ein Abonnement mit einem bestimmten Schlüssel ausgelöst werden kann. Ursprünglich wird alles bei der Initialisierung einmal ausgeführt, sodass dieses Abonnement nur einen Abschluss von Versand und Verlauf bietet
Abonnements: {
Setup ({Versand}) {
Versand ({Typ: 'Abfrage'})
}}
} Dies ist nur die erste Ausführung einer Versandaktion. Es wird keine Abonnementaktion ausgeführt.
Plötzlich bemerkt
Hilfreichster Kommentar
Versuchte die Steckdose, nur als Referenz.