在我的vue.js spa中,我有一个页面想要实现键盘交互。我使用vue路由器来促进链接。
到目前为止我注册了
const interactiveComponent = { // methods: { handleKeyboard(event) { // do something } }, created() { document.addEventListener('keydown', this.handleKeyboard); }, // };
问题是,当我离开该页时,处理程序仍然处于活动状态。
更糟糕的问题是,当我访问该页,然后离开并返回时,处理程序将再次注册,我的事件将运行两次。
在vue.js中是否存在容纳此类处理程序的约定?
您需要在 beforeDestroy 或 destroyed 钩子…
beforeDestroy
destroyed
const interactiveComponent = { // methods: { handleKeyboard(event) { // do something } }, created() { document.addEventListener('keydown', this.handleKeyboard); }, beforeDestroy() { document.removeEventListener('keydown', this.handleKeyboard); }, };