Dva: Una vez que el sistema cierra la sesión, ¿cómo puede una declaración borrar todos los datos de la tienda y se informa de un error cuando la ruta anidada actualiza la página?

Creado en 9 feb. 2017  ·  3Comentarios  ·  Fuente: dvajs/dva

Durante la operación de un usuario, el sistema retiene los datos de la última operación de la función, pero después de cerrar la sesión, otro usuario inicia sesión y descubre que los datos del usuario anterior aún existen. ¿Cómo puede una declaración borrar los datos de toda la tienda? ?

Hay otro problema. El enrutamiento de mi sistema usa anidamiento. Visite: http: // localhost : 8000 / main / repos. En este momento, cuando se actualiza f5, toda la página está en blanco. Consola: Error de sintaxis no detectado: Token inesperado <, índice .js: 1, y luego no puedo ver el código fuente en la consola ...

question

Comentario más útil

@bjwulin acaba de resolver este problema. De acuerdo con lo que dijo
La pregunta ahora es cómo obtener el estado inicial. Por supuesto, podemos escribir el estado original directamente en index.js. Sin embargo, con los cambios comerciales, si desea modificar varios estados, debe llegar a index.js para cambiar también el estado inicial correspondiente, lo cual es muy problemático. Por lo que es más conveniente importar directamente desde modelos.
el código se muestra a continuación:

const models=[];
models.push(require('./models/exhibit'));
models.push(require('./models/user'));
const initialState={};
models.forEach((m)=>initialState[m.namespace]=m.state);
const undo = r => (state, action) => {
  const newState = r(state, action);
  if (action.type == 'user/logoutOnlyStatus') {
    return {
      routing: newState.routing,
      ...initialState
    }
  }
  else {
    return newState
  }
};
const app=dva({
  onError(e){
    console.log(e)
  },
  onReducer: undo
});
app.model(require('./models/exhibit'));
app.model(require('./models/user'));
app.router(require('./router'));
app.start('#root');

Todos 3 comentarios

¿Cómo puede una declaración borrar los datos de toda la tienda?

Interceptar acción con onReducer

Entonces no puedo ver el código fuente en la consola ...

index.js cambiado a /index.js

@bjwulin acaba de resolver este problema. De acuerdo con lo que dijo
La pregunta ahora es cómo obtener el estado inicial. Por supuesto, podemos escribir el estado original directamente en index.js. Sin embargo, con los cambios comerciales, si desea modificar varios estados, debe llegar a index.js para cambiar también el estado inicial correspondiente, lo cual es muy problemático. Por lo que es más conveniente importar directamente desde modelos.
el código se muestra a continuación:

const models=[];
models.push(require('./models/exhibit'));
models.push(require('./models/user'));
const initialState={};
models.forEach((m)=>initialState[m.namespace]=m.state);
const undo = r => (state, action) => {
  const newState = r(state, action);
  if (action.type == 'user/logoutOnlyStatus') {
    return {
      routing: newState.routing,
      ...initialState
    }
  }
  else {
    return newState
  }
};
const app=dva({
  onError(e){
    console.log(e)
  },
  onReducer: undo
});
app.model(require('./models/exhibit'));
app.model(require('./models/user'));
app.router(require('./router'));
app.start('#root');

@zhangdistephen Me sale un error cuando uso onReducer. El error es que no se puede leer el valor de la tienda.El mío es cargar el modelo de forma asincrónica, parece imposible cambiar a sincrónico

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