Electron使用指南——13显示列表
2020-09-02 13:41
951 查看
屏幕快照的图片获取生成以后,将返回的信息显示在列表里。
1、重新规划 Store
重新规划 Store, 使用
Vuex模块来分开管理数据。在
/src/store/创建
modules文件夹, 在文件里创建
main.js与
modal.js两个文件。将
/src/store/index.js文件里的代码迁移到
modal.js里,做修改。三个文件的内容如下:
1.1 index.js
修改
/src/store/index.js:
[code]import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) import modal from './modules/modal' import main from './modules/main' export default new Vuex.Store({ modules: { modal, main } })
1.2 modal
编辑 /src/store/modules/modal.js
[code]const state = { isShowModal: false } const mutations = { setModalVisible(state, show) { state.isShowModal = show } } const actions = { setModalVisible({commit}, show) { commit('setModalVisible', show) } } export default { state, mutations, actions }
1.3 main.js
编辑
main.js,提供 Main.vue 管理的数据:
[code]import store from 'store' const state = { items: [] } const mutations = { setItems(state, item) { state.items.push({ id: new Date().getTime(), ...item }) // 数据缓存 store.set('items', state.items) }, initItems(state, items) { state.items = items } } const actions = { setItems({commit}, item) { commit('setItems', item) }, initItems({commit}, items) { commit('initItems', items) } } export default { state, mutations, actions }
2、修改 Modal.vue
/src/components/Modal.vue获取到数据后,装填到
Store中:
[code]<script> import { mapState, mapActions } from 'vuex' export default { // ... created() { ipcRenderer.on('new-item-success', (e, newItem) => { this.setItems(newItem) // ... }) }, methods: { ...mapActions(['setModalVisible', 'setItems']) // ... }, } </script>
3、修改 Main.vue 组件
修改
/src/components/Main.vue组件,用来响应的显示
Store里的
items数据。
[code]<template> <main> <p id="no-item">暂无数据。</p> <div id="items"> <div v-for="(item, index) in items" :key="item.id" class="read-item" :class="{selected: index === currentIndex}" @click="changeIndex(index)" > <img :src="item.screenshot" alt="item.title"> <h2>{{item.title}}</h2> </div> </div> </main> </template> <script> import { mapState, mapActions, mapGetters } from 'vuex' import store from 'store' export default { data() { return { currentIndex: 0 } }, created() { let items = store.get('items') || [] this.initItems(items) }, computed: { ...mapState({ items: state => state.main.items }) // ... }, methods: { ...mapActions(['initItems']), changeIndex(index) { this.currentIndex = index } }, } </script> <style lang='stylus' scoped> #items flex-grow 1 #no-item font-weight bold color silver text-align center width 100% position absolute top 100px z-index -1 .read-item display flex align-items center align-content center border-bottom lightgray 2px solid background #fafafa padding 10px border-left 10px solid lightgray -webkit-user-select none img width 20% margin-right 25px border solid 1px #ccc &:hover background #eee &.selected border-left-color dodgerblue </style>
相关文章推荐
- [置顶] Android编程权威指南之使用RecyclerView显示列表
- 使用虚列表和自画实现文件夹的缩略图显示
- ‘select’的使用:下拉列表分组显示
- 使用ExpandableListActivity显示扩展列表
- 使用SPFolderCollection以及SPFolder对象分层次显示文档列表(转)
- Quartz 2D编程指南(13) - PDF文档的创建、显示及转换
- Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页
- Unity3d NGUI的使用(十二)(UIGrid动态列表显示)
- XML入门指南(8)使用CSS来显示XML
- 使用批处理列表显示文件
- Android得到系统已安装应用程序包列表方法 自定义ListView显示 PackageManager的使用
- RSS阅读器(使用android解析技术解析xml文件并以列表的形式显示出来)
- Quartz 2D编程指南(13) - PDF文档的创建、显示及转换
- android开发教程之使用listview显示qq联系人列表
- 关于如何让应用程序不显示在“最近使用”的列表中
- Tree组件使用指南之六:不同的树节点显示不同的图标
- XML入门指南(9)使用XSL来显示XML数据
- OpenGL编程指南--显示列表
- 使用asp.net Ajax控件PopupControlExtender与GridView联合显示详情列表
- 使用google geocode api获取地址列表 中文显示问题