# `canDeactivate(transition) [-> Promise | Boolean]`
在验证阶段,当一个组件将要被切出的时候被调用。
### 参数
- [`transition {Transition}`](hooks.md#transition-object)
调用 `transition.next()` 可以断定( resolve )此钩子函数。调用 `transition.abort()` 可以无效化并取消此次切换。
### 预期返回值
- 可选择性返回 Promise :
- `resolve(true)` -> `transition.next()`
- `resolve(false)` -> `transition.abort()`
- `reject(reason)` -> `transition.abort(reason)`
- 可选择性返回 Boolean 值:
- `true` -> `transition.next()`
- `false` -> `transition.abort()`
### 详情
此钩子函数的调用顺序是从下至上。组件的 `canDeactivate` 钩子仅在子级组件的 `canDeactivate` 被断定( resolved )之后调用。
- vue
- 官方教程
- 起步
- 安装
- 概述
- Vue 实例
- Class 与 Style 绑定
- 数据绑定语法
- 条件渲染
- 列表渲染
- 表单控件绑定
- 组件
- 计算属性
- 自定义指令
- 自定义过滤器
- 方法与事件处理器
- 混合
- 插件
- 过渡
- 深入响应式原理
- 对比其它框架
- 构建大型应用
- API
- vue-router
- 安装
- 基本用法
- 嵌套路由
- 路由对象和路由匹配
- 具名路径
- 路由配置项
- router-view
- v-link
- 切换控制流水线
- 切换钩子函数
- data
- activate
- deactivate
- canActivate
- canDeactivate
- canReuse
- API
- 路由实例属性
- router.start
- router.stop
- router.map
- router.on
- router.go
- router.replace
- router.redirect
- router.alias
- router.beforeEach
- router.afterEach
- 文章
- VUE.JS: A (RE)INTRODUCTION
- 源码
- 表单控件绑定