mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Use shallowRef instead of ref in .vue files where possible (#34813)
				
					
				
			This PR improves some `.vue` components by using `shallowRef instead of ref`, which `should improve performance`. It's probably not significant, but it's an improvement because Vue no longer deep watches the ref (shallowRef). Also i used `useTemplateRef` instead of `ref`. --------- Signed-off-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		| @@ -1,19 +1,19 @@ | ||||
| <script lang="ts" setup> | ||||
| import {computed, onMounted, onUnmounted, ref, watch} from 'vue'; | ||||
| import {computed, onMounted, onUnmounted, shallowRef, watch} from 'vue'; | ||||
| import {SvgIcon} from '../svg.ts'; | ||||
| import {toggleElem} from '../utils/dom.ts'; | ||||
|  | ||||
| const {csrfToken, pageData} = window.config; | ||||
|  | ||||
| const mergeForm = ref(pageData.pullRequestMergeForm); | ||||
| const mergeForm = pageData.pullRequestMergeForm; | ||||
|  | ||||
| const mergeTitleFieldValue = ref(''); | ||||
| const mergeMessageFieldValue = ref(''); | ||||
| const deleteBranchAfterMerge = ref(false); | ||||
| const autoMergeWhenSucceed = ref(false); | ||||
| const mergeTitleFieldValue = shallowRef(''); | ||||
| const mergeMessageFieldValue = shallowRef(''); | ||||
| const deleteBranchAfterMerge = shallowRef(false); | ||||
| const autoMergeWhenSucceed = shallowRef(false); | ||||
|  | ||||
| const mergeStyle = ref(''); | ||||
| const mergeStyleDetail = ref({ | ||||
| const mergeStyle = shallowRef(''); | ||||
| const mergeStyleDetail = shallowRef({ | ||||
|   hideMergeMessageTexts: false, | ||||
|   textDoMerge: '', | ||||
|   mergeTitleFieldText: '', | ||||
| @@ -21,33 +21,33 @@ const mergeStyleDetail = ref({ | ||||
|   hideAutoMerge: false, | ||||
| }); | ||||
|  | ||||
| const mergeStyleAllowedCount = ref(0); | ||||
| const mergeStyleAllowedCount = shallowRef(0); | ||||
|  | ||||
| const showMergeStyleMenu = ref(false); | ||||
| const showActionForm = ref(false); | ||||
| const showMergeStyleMenu = shallowRef(false); | ||||
| const showActionForm = shallowRef(false); | ||||
|  | ||||
| const mergeButtonStyleClass = computed(() => { | ||||
|   if (mergeForm.value.allOverridableChecksOk) return 'primary'; | ||||
|   if (mergeForm.allOverridableChecksOk) return 'primary'; | ||||
|   return autoMergeWhenSucceed.value ? 'primary' : 'red'; | ||||
| }); | ||||
|  | ||||
| const forceMerge = computed(() => { | ||||
|   return mergeForm.value.canMergeNow && !mergeForm.value.allOverridableChecksOk; | ||||
|   return mergeForm.canMergeNow && !mergeForm.allOverridableChecksOk; | ||||
| }); | ||||
|  | ||||
| watch(mergeStyle, (val) => { | ||||
|   mergeStyleDetail.value = mergeForm.value.mergeStyles.find((e: any) => e.name === val); | ||||
|   mergeStyleDetail.value = mergeForm.mergeStyles.find((e: any) => e.name === val); | ||||
|   for (const elem of document.querySelectorAll('[data-pull-merge-style]')) { | ||||
|     toggleElem(elem, elem.getAttribute('data-pull-merge-style') === val); | ||||
|   } | ||||
| }); | ||||
|  | ||||
| onMounted(() => { | ||||
|   mergeStyleAllowedCount.value = mergeForm.value.mergeStyles.reduce((v: any, msd: any) => v + (msd.allowed ? 1 : 0), 0); | ||||
|   mergeStyleAllowedCount.value = mergeForm.mergeStyles.reduce((v: any, msd: any) => v + (msd.allowed ? 1 : 0), 0); | ||||
|  | ||||
|   let mergeStyle = mergeForm.value.mergeStyles.find((e: any) => e.allowed && e.name === mergeForm.value.defaultMergeStyle)?.name; | ||||
|   if (!mergeStyle) mergeStyle = mergeForm.value.mergeStyles.find((e: any) => e.allowed)?.name; | ||||
|   switchMergeStyle(mergeStyle, !mergeForm.value.canMergeNow); | ||||
|   let mergeStyle = mergeForm.mergeStyles.find((e: any) => e.allowed && e.name === mergeForm.defaultMergeStyle)?.name; | ||||
|   if (!mergeStyle) mergeStyle = mergeForm.mergeStyles.find((e: any) => e.allowed)?.name; | ||||
|   switchMergeStyle(mergeStyle, !mergeForm.canMergeNow); | ||||
|  | ||||
|   document.addEventListener('mouseup', hideMergeStyleMenu); | ||||
| }); | ||||
| @@ -63,7 +63,7 @@ function hideMergeStyleMenu() { | ||||
| function toggleActionForm(show: boolean) { | ||||
|   showActionForm.value = show; | ||||
|   if (!show) return; | ||||
|   deleteBranchAfterMerge.value = mergeForm.value.defaultDeleteBranchAfterMerge; | ||||
|   deleteBranchAfterMerge.value = mergeForm.defaultDeleteBranchAfterMerge; | ||||
|   mergeTitleFieldValue.value = mergeStyleDetail.value.mergeTitleFieldText; | ||||
|   mergeMessageFieldValue.value = mergeStyleDetail.value.mergeMessageFieldText; | ||||
| } | ||||
| @@ -74,7 +74,7 @@ function switchMergeStyle(name: string, autoMerge = false) { | ||||
| } | ||||
|  | ||||
| function clearMergeMessage() { | ||||
|   mergeMessageFieldValue.value = mergeForm.value.defaultMergeMessage; | ||||
|   mergeMessageFieldValue.value = mergeForm.defaultMergeMessage; | ||||
| } | ||||
| </script> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kilisei
					Kilisei