Dva: ¿Pueden las suscripciones agregar algunos ejemplos o documentación?

Creado en 19 oct. 2016  ·  17Comentarios  ·  Fuente: dvajs/dva

La fuente de datos puede ser la hora actual, la conexión websocket del servidor, la entrada del teclado, el cambio de geolocalización, el cambio de enrutamiento del historial, etc.

Puede comprender de dónde provienen esta configuración y keyEvent, y cómo escribirlo si es websocket o algo más.

question

Comentario más útil

Probé el enchufe, solo como referencia.

// 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'
        })
    })
}

Todos 17 comentarios

Es decir, esta clave solo se usa para ayudar al desarrollador a marcar un cierto tipo de función aquí. Simplemente pasa en despacho e historial, y el código de monitoreo específico requiere una biblioteca de terceros específica para implementar el monitoreo.

¿Mi comprensión es correcta?

Sí, aquí se usa el formato clave / valor. En la actualidad, es principalmente para mantener el formato consistente con efectos y reductores. Posteriormente, se admitirá la función de cancelación de suscripción y se usará la clave.

Entiendo, gracias.
Pero creo que puedo agregar el significado de la discusión anterior a estos documentos, puede encontrar el mismo problema que yo :)

suscripciones solo define un lugar para suscribirse a los datos. Luego, se pasará el envío y el historial. Cómo suscribirse o monitorear necesitará una biblioteca de clases de terceros para implementar. ¿Eso es comprensión? El envío es el envío en la tienda de redux, y el historial es el historial en el enrutador de reacción, ¿se entiende?

@ roc2539 Sí.

¿Puedo acceder al contenido del estado o los accesorios en la configuración de las suscripciones?

@gzbigegg No, active la acción y deje que el efecto la maneje.

subscriptions: {
    setup ({ dispatch }) {
      dispatch({ type: 'query' })
    }
}

Hay dos preguntas, no sé si es correcta, el documento dice que elm nunca ha estado en contacto con ellos y no entiendo muy claramente las suscripciones.

  1. Después de pasar el historial y ejecutar history.listen, se activará cuando cambie la ruta. No sé si la comprensión es correcta.
  2. ¿Cuándo se activarán las suscripciones que solo pasan en el envío?

Me encantaría ver algunos ejemplos de suscripción como websocket

Cómo mostrar dos acciones en la configuración

No hay un documento claro sobre el tiempo y los parámetros de inyección de la devolución de llamada en el registro de suscripción @ roc2539, ¿ puede responderlo?

Después de cambiar a la ruta hash, la configuración no puede monitorear el cambio de la entrada de URL desde el teclado.
Pero usar browserHistory está bien.

 setup ({ dispatch }) {
      console.log('models-app') // 手动改变url地址,不会进此方法
      dispatch({ type: 'query' })

    },

Probé el enchufe, solo como referencia.

// 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'
        })
    })
}

He estado tratando de averiguar cómo activar una suscripción con una clave específica. Originalmente, todo se ejecutará una vez cuando se inicialice, por lo que esta suscripción solo proporciona un cierre de envío e historial 😄

suscripciones: {
configuración ({envío}) {
despacho ({tipo: 'consulta'})
}
} Esta es solo la ejecución inicial de una acción de envío, en realidad no realiza una acción de suscripción.

De repente me di cuenta

¿Fue útil esta página
0 / 5 - 0 calificaciones