Electron使用指南——11添加一个新的信息

1、创建 Store

1.1 编辑 store

编辑 /vue-renderer/src/store/index.js

import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    isShowModal: false
  },

  mutations: {
    setModalVisible(state, show) {
      state.isShowModal = show
    }
  },

  actions: {
    setModalVisible({commit}, show) {
      commit('setModalVisible', show)
    }
  }
})

1.2 引入 store

编辑 /vue-renderer/src/main.js

// ...
import store from './store'
// ...

2、显示添加窗口

编辑 /vue-renderer/src/components/Header.vue:

<template>
  <header>
    <button id="show-modal" @click="setModalVisible(true)">+</button>
    // ...
  </header>
</template>

<script>
import { mapActions } from 'vuex'
export default {
  methods: {
    ...mapActions(['setModalVisible'])
  },
}
</script>

3、完善添加模态组件

编辑 /vue-renderer/src/components/Modal.vue

<template>
  <div id="modal" v-show="isShowModal">
    <input type="text" id="url" :disabled="status" v-model="url" placeholder="输入 URL ...">
    <button id="add-item" :class="{disabled: status}" :disabled="status" @click="addItem">{{addButtonText}}</button>
    <button id="close-modal" v-show="!status" @click="setModalVisible(false)">取消</button>
  </div>
</template>

<script>
import { mapState, mapActions } from 'vuex'

export default {
  data() {
    return {
      url: '',
      status: false,
      addButtonText: '添加'
    }
  },

  created() {

    // Listen for new item from main process
    ipcRenderer.on('new-item-success', (e, newItem) => {
      console.log(newItem)

      this.status = false
      this.addButtonText = '添加'
      this.url = ''

      this.setModalVisible(false)
    })
  },

  computed: {
    ...mapState(['isShowModal'])
  },

  methods: {
    ...mapActions(['setModalVisible']),

    addItem() {
      if (this.url !== '') {

        // Send new item url to main process
        ipcRenderer.send('new-item', this.url)

        this.status = true
        this.addButtonText = '添加中...'
      }
    }
  }
}
</script>

4、完善主进程 main.js

编辑 /main.js , 在文件代码中的最外层添加 ipcMain 的 new-item 时间监听,重点是 ipc 通信:

//...

// Modules
const { ipcMain } = require('electron')

// Listen for new item request
ipcMain.on('new-item', (e, itemUrl) => {

  // Get new item and send back to renderer
  setTimeout(() => {
    e.sender.send('new-item-success', 'New item from main process')
  }, 2000)
})

// ...
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值