0

我正在尝试通过理解完成的代码来学习 electron-vue。对于源码,我使用的是Eplee,它是一个用vue js + electron 构建的epub阅读器,这里是Eplee的源码链接。 https://github.com/Janglee123/eplee

<!-- BookmarkMenu.vue -->

<template>
    <el-popover :popper-class="`popper ${theme}`" width="350" trigger="hover">
        <div class="el-popover__title">
            Bookmarks
            <el-button size="mini" icon="el-icon-plus" circle @click="addBookmark" />
        </div>
        <el-button slot="reference" size="small" icon="el-icon-collection-tag" circle />
        <el-tree :data="bookmarks" node-key="id" @node-click="onNodeClick">
            <span slot-scope="{ node }" class="custom-tree-node">
                <span>{{ node.label }}</span>
                <span>
                    <el-button type="text" icon="el-icon-close" @click="() => removeBookmark(node)" />
                </span>
            </span>
        </el-tree>
    </el-popover>
</template>

<script>
export default {
    name: 'BookmarkMenu',
    props:{
        bookmarks:{
            default:()=>{},
            type: Array,
        },
        theme:{
            default:'default',
            type:String,
        }
    },
    methods:{
        addBookmark(){
            this.$emit('add-bookmark');
        },
        removeBookmark(data){
            this.$emit('remove-bookmark',data);
        },
        onNodeClick(data){
            this.$emit('node-click',data);
        }
    }
}
</script>

<style lang="scss" scoped>

</style>

我不明白数据是如何在这里绑定的。

例如, <el-button size="mini" icon="el-icon-plus" circle @click="addBookmark" /> 当有点击

  1. 它触发addBookmarkBookmarkMenu.vue 的方法

  2. addBookmark'add-bookmark'父组件的方法触发器

但是,<el-button></el-button>只是为了样式而添加的一个类,而不是父组件。

对于 vue 和 react,我认为为了从不同的文件导入组件并正确放置它们,我需要放置两件事。

  1. 进口线
  2. 放置线

问题1:这是一种正确的导入方式吗?还是您只需要 1. 进口线?

问题2:那么,在vue-electron中,如何在父子组件之间绑定数据呢?

我假设是文件结构处理它 https://github.com/SimulatedGREG/electron-vue/blob/master/docs/en/renderer-process.md

4

1 回答 1

1

Electron 只是您的 Web 应用程序的运行时。

看看 Vue.js 的事件模型。

https://vuejs.org/v2/guide/events.html https://vuejs.org/v2/guide/components-custom-events.html

另外,请查看组件指南https://ru.vuejs.org/v2/guide/components.html

在你的情况下

<el-button></el-button>只是为了样式而添加的一个类,而不是父组件。

它不是父组件,它是组件的子<BookmarkMenu>组件。它里面可能绝对包含任何东西。

并且方法触发作为子this.$emit('add-bookmark');组件的组件的事件侦听器(如果有) 。<BookmarkMenu>

例如<BookmarkMenu @add-bookmark="someHandlerInAComponentContainingBookmarkMenu"/>

于 2019-12-23T20:38:01.530 回答