Dva: Desain Model

Dibuat pada 8 Des 2016  ·  11Komentar  ·  Sumber: dvajs/dva

Haruskah pembagian modul dalam Model dibagi dengan "garis lintang halaman" atau "garis lintang data"?

Misalnya:
"Data" di aplikasi saya --- Berita berita + Pengguna pengguna + Komentar (3 data independen)
"Halaman" di aplikasi saya --- beranda Beranda + Halaman Pengguna halaman saya (keduanya akan menggunakan model dan tindakan dalam "data" di atas dengan derajat yang berbeda-beda)

1. Buat HomePageModel dan UserPageModel
Rancang aksi dan model News+User di HomePageModel
Rancang tindakan dan model Pengguna+Komentar di UserPageModel

2. Buat Model Berita, Model Pengguna, dan Model Komentar
Hubungkan modul NewsModel dan UserModel di halaman HomePage Hubungkan modul UserModel dan CommentModel di halaman UserPage.

Dengan cara apa saya harus mendesain Model?

question

Komentar yang paling membantu

@maafcc
Dengan kata lain, saya dapat sepenuhnya memisahkan "garis lintang data" dan "garis lintang halaman", membuat model yang berbeda, menghubungkan model "garis lintang halaman" yang sesuai dan model "dimensi data" yang diperlukan di halaman, bukan? .

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

Semua 11 komentar

@nikogu
Saya pikir contoh ini tidak menjawab pertanyaan saya karena contoh ini hanya melibatkan "satu halaman" + "data tunggal"
Jadi dapat dipahami sebagai membagi Model dengan "halaman", atau dapat dipahami sebagai membagi Model menurut "data".
PS: Model divisi "halaman" yang disebutkan di sini mengacu pada pembuatan model untuk setiap halaman, dan Model divisi "data" mengacu pada pembuatan model untuk setiap unit data independen atau logika bisnis.

Memahami contoh ini:
1. Model divisi "Halaman" --- Jika ada halaman baru, halaman tersebut menampilkan daftar komentar dan daftar pengguna yang sesuai. Kemudian Anda harus membuat model yang disebut usersAndMessages untuk digunakan pada halaman baru ini.
2. Model Pembagi "Data" --- Jika Anda perlu menampilkan daftar komentar di halaman ini, Anda perlu membuat model lain yang disebut komentar.

Pemahaman saya seharusnya bahwa "halaman" sesuai dengan "model".
Tetapi bagaimana mengatasi masalah ini dengan beberapa bagian yang perlu digunakan kembali di antara "halaman"?
Pada akhirnya, kita harus memisahkan tindakan dan reduksi yang digunakan kembali dari model?
Tapi bukankah ini kembali ke cara tradisional menulis redux?

Pemahaman saya seharusnya bahwa "halaman" sesuai dengan "model".

Model dan halaman tidak perlu saling bersesuaian, dapat didesain secara terpisah, dan semua data yang dibutuhkan pada halaman dapat diperoleh melalui connect.

@maafcc
Dengan kata lain, saya dapat sepenuhnya memisahkan "garis lintang data" dan "garis lintang halaman", membuat model yang berbeda, menghubungkan model "garis lintang halaman" yang sesuai dan model "dimensi data" yang diperlukan di halaman, bukan? .

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

@zerozaki0752 Ya.

@sorrycc Terima kasih! ! !

Pertanyaan lain adalah tentang beberapa masalah dalam demo aksi penemuan
1. Metode yang didefinisikan dalam efek dan reduksi dalam model, ada yang digunakan secara internal oleh model, dan ada yang dipanggil oleh tampilan (tidak ada perbedaan yang jelas)
2. Dalam demo, tampilan untuk memanggil aksi disebut dispatch "namespace/functionName" seperti ini
3. Parameter kedua mapDispatchToProps tidak diteruskan saat menghubungkan

Efek yang saya harapkan adalah merangkum apa yang perlu dipanggil oleh tampilan dalam model, dan kemudian mapDispatchToProps diimpor ke tampilan, dan tindakan dapat dipicu secara langsung melalui props.namespace_functionName dalam tampilan tanpa harus mengirimkan setiap kali.

Saya ingin tahu apakah ini masuk akal? Apakah itu layak?

Ini adalah kebiasaan pribadi, saya lebih suka metode pengiriman (tindakan).

Parameter mapDispatchToProps tidak diteruskan dalam koneksi untuk mengikat tindakan, tetapi dapatkah Anda menggunakan pengiriman untuk mentransfer ke tindakan dalam model apa pun?

Komponen yang connect akan memiliki props dispatch .

Apakah halaman ini membantu?
0 / 5 - 0 peringkat