Dva: Diseño de modelos

Creado en 8 dic. 2016  ·  11Comentarios  ·  Fuente: dvajs/dva

¿Debería dividirse la división de módulos en modelos por "latitud de página" o "latitud de datos"?

P.ej:
"Datos" en mi aplicación --- Noticias de noticias + Usuario usuario + Comentario (3 datos independientes)
La "página" en mi aplicación --- página de inicio de HomePage + UserPage mi página (ambos usarán el modelo y la acción en los "datos" de arriba en diversos grados)

1. Cree HomePageModel y UserPageModel
Diseñar la acción y el modelo de News + User en HomePageModel
Diseñar la acción y el modelo de User + Comment en UserPageModel

2. Establecer NewsModel, UserModel y CommentModel
Conecte los módulos NewsModel y UserModel en la página HomePage Conecte los módulos UserModel y CommentModel en la página UserPage.

¿De qué manera debo diseñar modelos basados ​​en?

question

Comentario más útil

@lo siento
En otras palabras, puedo separar completamente la "latitud de datos" y la "latitud de página", crear diferentes modelos, conectar el modelo de "latitud de página" correspondiente y el modelo de "dimensión de datos" requerido en la página, ¿verdad?

function mapStateToProps(state) {
  return {
    // 数据维度创建的model
    users: state.users,
    comments:state.comments,
    // 页面维度创建的model
    homePage:state.homePage,
  };
}

Todos 11 comentarios

@nikogu
Creo que este ejemplo no responde a mi pregunta porque este ejemplo solo incluye "página única" + "datos únicos"
Por tanto, puede entenderse como dividir modelos por "páginas", o como dividir modelos según "datos".
PD: Los modelos de división de "página" mencionados aquí se refieren a la creación de un modelo para cada página, y los modelos de división de "datos" se refieren a la creación de un modelo para cada unidad de datos independiente o lógica de negocios.

Comprensión de este ejemplo:
1. Modelos de división "Página" --- Si hay una página nueva, la página muestra la lista de comentarios y su lista de usuarios correspondiente. Luego, debe crear un modelo llamado usersAndMessages para usar en esta nueva página.
2. Modelos de división de "datos" --- Si necesita mostrar una lista de comentarios en esta página, debe crear otro modelo llamado comentarios.

Tengo entendido que una "página" corresponde a un "modelo".
Pero, ¿cómo lidiar con este problema con algunas partes que deben reutilizarse entre "páginas"?
Al final, ¿debemos separar las acciones reutilizadas y los reductores de los modelos?
¿Pero no vuelve esto a la forma tradicional de escribir redux?

Tengo entendido que una "página" corresponde a un "modelo".

No es necesario que el modelo y la página se correspondan entre sí, se pueden diseñar por separado y todos los datos necesarios en la página se pueden obtener a través de connect.

@lo siento
En otras palabras, puedo separar completamente la "latitud de datos" y la "latitud de página", crear diferentes modelos, conectar el modelo de "latitud de página" correspondiente y el modelo de "dimensión de datos" requerido en la página, ¿verdad?

function mapStateToProps(state) {
  return {
    // 数据维度创建的model
    users: state.users,
    comments:state.comments,
    // 页面维度创建的model
    homePage:state.homePage,
  };
}

@ zerozaki0752 Sí.

@sorrycc ¡ Gracias! ! !

Otra pregunta es sobre algunos problemas en la demostración de acción de descubrimiento.
1. Los métodos definidos en los efectos y los reductores en el modelo, algunos son utilizados internamente por el modelo y otros deben ser llamados por la vista (no hay una distinción clara)
2. En la demostración, la vista para llamar a la acción se llama despacho "espacio de nombres / nombre de función" así
3. El segundo parámetro mapDispatchToProps no se pasa cuando se conecta

Mi efecto esperado es encapsular lo que necesita ser llamado por la vista en el modelo, y luego mapDispatchToProps se importa a la vista, y la acción se puede activar directamente a través de props.namespace_functionName en la vista sin tener que enviar cada vez.

Me pregunto si esto es razonable. ¿Es factible?

Este es un hábito personal, prefiero el método de envío (acción).

El parámetro mapDispatchToProps no se pasa en connect para vincular la acción, pero ¿puede usar dispatch para transferir a la acción en cualquier modelo?

El componente que es connect tendrá apoyos de dispatch .

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