[英]How to invoke some action on a component from the outside?
我正在为 VuePress 构建一个简单的反馈收集组件。 我将它“打包”为插件,因为这是我认为的正确方法。 该插件非常简单,包括:
FeedbackCollector.vue
- 一个在页面底部显示反馈按钮的 Vue 组件。 单击后,会出现一个面板,其中包含一些用户问题
index.js
:
const path = require('path')
module.exports = {
name: 'feedback-flyout',
enhanceAppFiles: [
path.resolve(__dirname, 'enhanceAppFile.js')
],
globalUIComponents: 'FeedbackCollector'
}
enhanceAppFile.js
:import FeedbackCollector from './FeedbackCollector.vue'
export default ({ Vue }) => {
Vue.component('FeedbackCollector', FeedbackCollector)
}
有了这组文件,我就有了基本的功能:我的组件显示在我的 VuePress 站点的每个页面上。 现在,问题是我希望有时能够自动打开反馈面板,而无需用户单击按钮。 我会向我的组件openPanel
添加一个方法。 如何从外部调用该方法? 那个“外部”可能是我插件中的另一个 JS 文件,它会检查一些 cookies,如果用户以前从未见过,则打开面板。
怎么做?
FeedbackCollector.vue
中定义的openPanel
方法?或者也许有比我建议的更好的方法来做到这一点? 谢谢你的帮助!
生命周期挂钩在enhanceApp.js
文件中定义。 有关它的详细信息在文档中。
例如,要定义我上面评论的更新钩子,您可以将您的enhanceApp.js
文件编码为
export default ({ Vue, options }) => {
options['updated'] = function () {
// your check function
}
}
要定义 state 变量和管理它的方法,您可以阅读有关数据和方法的文档。 请记住,Vue 实例在 vuepress 上的enhanceApp.js
文件中可用。 要访问组件内的 Vue 实例, 请调用$root
属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.