javascript - vue2, vuex, beberapa keraguan tentang lapisan data dan lapisan Pengawal
天蓬老师
天蓬老师 2017-07-03 11:41:41
0
1
790

Soalannya seperti berikut, tolong bantu saya menyelesaikannya

Biar saya bercakap tentang pemahaman peribadi saya dahulu

  1. Perubahan dalam lapisan model akan ditunjukkan pada lapisan paparan dan perubahan dalam lapisan paparan juga akan ditunjukkan pada model. Dalam fail .vue, lapisan model ialah data对象里面的数据(此处假设不存在store仓库) Dalam vue, paparan ialah kandungan dalam templat, model ialah data yang ada dalam objek data dan kaedah yang serupa dengan kaedah harus dikelaskan dalam lapisan Pengawal.

  2. Model mvvm masih belum keluar Kebanyakan orang menulis kod mengikut model mvc Mereka memisahkan data, pandangan dan logik perniagaan dan menulisnya, supaya kod itu kelihatan lebih jelas.

  3. vuex ialah gudang, terutamanya untuk menyelesaikan kesulitan komunikasi apabila beberapa komponen Vue berkongsi keadaan tertentu, serta beberapa komponen adik-beradik. Mempunyai vuex tidak bermakna semua data harus disimpan dalam vuex.

Cerita masalah saya

data(){
        return {
            userList:[],
            nextSwitch:true, 
            prevSwitch:true,  
            chooseUserId:null,
            linghtboxStatus:false,
            linghtboxImgList:[],
            linghtboxCurImg:'',
            currentPage:1,
            listMaxPage:0
        }
    },
mounted(){
        const _this = this;
            let Listdata = {
                id:this.projectId,
                pagesize:5,
                page:this.currentPage
            }
            this.$store.dispatch('proposalListAc',Listdata).then(function (response) {
                if(response.code === 200) {
                    _this.userList = response.data.list.lists
                    _this.listMaxPage = response.data.list.pages
                    if(_this.listMaxPage > 1) { 
                        _this.nextSwitch = false
                    }
                }
            })
        }
    },
其实这段代码逻辑如下,此处我需要在组件mounted的时候,需要请求一下数据,将一个列表渲染出来,但是我这个列表的数据是这个组件中私有的,所以并不需要存在vuex中去通知其他的组件。store中的代码如下
actions:{
    proposalListAc:function(context,data){
            let promise = new Promise(function(resolve,reject){
                api.getData('proposalList',data).then(function (response) {
                    resolve(response.data);
                })
            })
            return promise
        }
}

Jadi bermula dari niat asal untuk memisahkan pandangan, data dan logik perniagaan, adakah wajar untuk menstruktur kod dengan cara ini? Malah, senarai ini juga mempunyai fungsi halaman sebelumnya dan halaman seterusnya saya perlu membina parameter permintaan untuk memberitahu pelayan halaman mana data yang diminta dan berapa banyak data yang diminta. Fungsi tidak sukar. Tetapi rakan sekerja saya berkata bahawa fungsi seperti halaman sebelumnya dan halaman seterusnya tergolong dalam lapisan data (kerana intipatinya ialah data telah berubah), dan perkara ini harus diletakkan di dalam kedai. Tetapi pemahaman saya ialah pertama sekali, senarai saya adalah peribadi untuk komponen ini dan tidak perlu berkongsi mana-mana keadaan dengan komponen lain. Jadi saya hanya mengedarkan data yang diminta ke halaman melalui penghantaran, dan saya perlu mengira Halaman semasa apabila mengklik pada halaman sebelumnya atau halaman seterusnya Ini sepatutnya tergolong dalam logik perniagaan (lapisan Pengawal), bukan lapisan model (walaupun The perubahan terakhir masih merupakan data, tetapi saya perlu menggunakan logik untuk menilai bagaimana data harus berubah).
Sila beritahu saya cara menstruktur kod dalam situasi perniagaan ini, yang lebih munasabah dan selaras dengan niat asal untuk memisahkan pandangan, data dan logik perniagaan, menjadikan kod lebih elegan. (Projek ini bukan projek kecil, jadi vuex telah diperkenalkan. Sekeping kod ini hanya sebahagian kecil. Terdapat banyak modul berbeza di kedai). Semua, sila berkongsi pemahaman dan pendapat anda

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

membalas semua(1)
阿神

Memandangkan anda berkata ia adalah komponen persendirian, ia mesti dikira secara dalaman Mengapa perlu bersusah payah untuk meletakkannya di kedai untuk pengurusan bersatu?

Api yang anda gunakan untuk meminta data dirangkumkan, teruskan terus Halaman semasa

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan