注册全局组件
2.0:
Vue.component('UITreeBase', UITreeBase)
3.0:
const app = createApp(App)
// 作为全局组件避免交叉引用
app.component('UITreeBase', UITreeBase)
Vuex
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
design,
user
}
})
3.0:
import { createStore } from 'vuex'
export default createStore({
modules: {
design,
user
}
})
computed中的mapState
import { mapState } from 'vuex'
computed: {
…mapState({
sideBars: (state: any) => state.design.leftSidebars,
leftSidebarMinWidth: (state: any) => state.design.leftSidebarMinWidth,
pageScale: (state: any) => state.design.scale
})
}
3.0
const leftSidebarMinWidth = computed((ctx: any) => ctx.$store.state.design.leftSidebarMinWidth) const leftSidebarWidth = computed({ get () { return this.$store.state.design.leftSidebarWidth }, set (v: number) { this.$store.commit('updateState', { leftSidebarWidth: v }) } })
setup中的this
import { ref, reactive, computed, watch, onMounted, getCurrentInstance } from 'vue' const { ctx } = getCurrentInstance()
store
2.0 调用store是直接通过this.$store.commit/dispatch
3.0
import { useStore } from 'vuex' const store = useStore() store.commit('updateState', { rightSidebarIsOpen: v })
如果是要使用$store的话,需要在src目录下面创建一个shims-vux.d.ts文件,内容如下
import { Store } from 'vuex' import { State } from './store' declare module '@vue/runtime-core' { interface ComponentCustomProperties { $store: Store<State> } } // Vuex@4.0.0-beta.1 is missing the typing for `useStore`. See https://github.com/vuejs/vuex/issues/1736 declare module 'vuex' { export function useStore(key?: string): Store<State> }
注意:.$store用法虽然能编译通过,但似乎并不能想期望的2.0那样工作;useStore()在setup里面调用,如果在方法里面调用,或则在computed的get,set里面调用useStore()返回的是undefined
$refs
2.0 直接用this.$refs.XXX引用
3.0 直接需要const refName = ref(), 然后setup中返回refName即可,refName就是ref=“refName”中的名字
$nextTick
import { nextTick } from 'vue'
Vue.component
2.x 动态注册组件
Vue.component(
name,
(resolve) => {
// console.log(`@/components/ui/${this.ui}_${this.uiVersion}/${this.uiconfig.type}.vue`)
require([`@/components/ui/${this.ui}_${this.uiVersion}/${this.uiconfig.type}.vue`], resolve)
}
)
Vue.config.productionTip
3.x 已删除该选项
Write operation failed: computed value is readonly
这个警告有几种情况:
- 对应computed没有定义set, 定义对应的set即可
- store中使用了[]语法,比如state[name] = value: