Dva: Дизайн моделей

Созданный на 8 дек. 2016  ·  11Комментарии  ·  Источник: dvajs/dva

Следует ли разделять модули в моделях по «широте страницы» или «широте данных»?

Например:
«Данные» в моем приложении --- Новости, новости + Пользователь + комментарий (3 независимых данных)
«Страница» в моем приложении --- Домашняя страница HomePage + Моя страница UserPage (оба они будут использовать модель и действие в «данных» выше в разной степени)

1. Создайте HomePageModel и UserPageModel.
Создайте действие и модель News + User в HomePageModel
Разработайте действие и модель User + Comment в UserPageModel

2. Установите NewsModel, UserModel и CommentModel.
Подключите модули NewsModel и UserModel на странице HomePage.Соедините модули UserModel и CommentModel на странице UserPage.

Каким образом мне следует разрабатывать модели на основе?

question

Самый полезный комментарий

@sorrycc
Другими словами, я могу полностью разделить «широту данных» и «широту страницы», создать разные модели, связать соответствующую модель «широты страницы» и требуемую модель «измерения данных» на странице, верно?

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

Все 11 Комментарий

@nikogu
Я думаю, что этот пример не отвечает на мой вопрос, потому что этот пример включает только «одну страницу» + «отдельные данные».
Таким образом, это можно понимать как разделение моделей по «страницам» или как разделение моделей по «данным».
PS: Упомянутые здесь модели разделения «страницы» относятся к созданию модели для каждой страницы, а модели разделения «данных» относятся к созданию модели для каждой независимой единицы данных или бизнес-логики.

Понимание этого примера:
1. Модели раздела «Страница» --- Если есть новая страница, на ней отображается список комментариев и соответствующий список пользователей. Затем вы должны создать модель под названием usersAndMessages для использования на этой новой странице.
2. Модели разделения «данных» --- Если вам нужно отобразить список комментариев на этой странице, вам нужно создать другую модель, называемую комментариями.

Насколько я понимаю, «страница» соответствует «модели».
Но как решить эту проблему с некоторыми частями, которые необходимо повторно использовать между «страницами»?
В конце концов, мы должны отделить повторно используемые действия и редукторы от моделей?
Но разве это не возврат к традиционному способу написания redux?

Насколько я понимаю, «страница» соответствует «модели».

Модель и страница не обязательно должны соответствовать друг другу, их можно разработать отдельно, а все данные, необходимые на странице, можно получить через подключение.

@sorrycc
Другими словами, я могу полностью разделить «широту данных» и «широту страницы», создать разные модели, связать соответствующую модель «широты страницы» и требуемую модель «измерения данных» на странице, верно?

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

@ zerozaki0752 Да.

@sorrycc Спасибо! ! !

Другой вопрос о некоторых проблемах в демонстрационном действии Discovery.
1. Методы, определенные в эффектах и ​​редукторах модели, некоторые используются внутри модели, а некоторые должны вызываться представлением (четкого различия нет).
2. В демонстрации представление для вызова действия называется диспетчеризацией "namespace / functionName", как это
3. Второй параметр mapDispatchToProps не передается при подключении

Мой ожидаемый эффект - инкапсулировать то, что должно вызываться представлением в модели, а затем mapDispatchToProps импортируется в представление, и действие может запускаться непосредственно через props.namespace_functionName в представлении без необходимости отправлять каждый раз.

Интересно, разумно ли это? Насколько это возможно?

Это личная привычка, предпочитаю метод отправки (действия).

Параметр mapDispatchToProps не передается в connect для привязки действия, но можно ли использовать диспетчеризацию для передачи действия в любой модели?

Компонент connect будет иметь свойства dispatch .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги