1. 使用ref定义数据
type TimeType = "CREATE_TIME_TYPE" | "SUBMIT_TIME_TYPE" | "WRITE_OFF_TIME_TYPE";
interface QueryParams {
queryTimeType: TimeType;
startTime: string;
endTime: string;
detailOrderNo: string;
banStatus: string;
customerNo: string;
subOrderNo: string;
rechargeOrderNo: string;
activityId: string;
productType: string;
orderSubStatus: string;
productName: string;
productNo: string;
bankOutletNo: string;
orderSource: string;
projectId: string;
userId: string;
userAssociationId: string;
payType: string;
telephone: string;
chengQuanId: string;
payMerId: string;
rechargeAccount: string;
}
const queryParams = ref<QueryParams>({
startTime: "",
endTime: "",
detailOrderNo: "",
subOrderNo: "",
rechargeOrderNo: "",
chengQuanId: "",
projectId: "",
activityId: "",
productType: "",
productName: "",
productNo: "",
bankOutletNo: "",
orderSource: "",
orderSubStatus: "",
userId: "",
userAssociationId: "",
payType: "",
telephone: "",
payMerId: "",
banStatus: "",
customerNo: "",
rechargeAccount: "",
queryTimeType: "CREATE_TIME_TYPE"
});
reactive 通常用于form表单校验的时进行定义
import { FormRules } from "element-plus";
const batchImportRules = reactive<FormRules>({
file: { required: true, message: "请上传文件", trigger: "change" }
});
提交数据时form表单校验(类似vue2的this.$refs.dom.validate)
<el-formweb
ref="importBatchFormRef"
:model="batchImportForm"
:rules="batchImportRules"
label-width="0px"
>
....
</el-form>
<d-button
v-prevent-re-click
type="primary"
:loading="btnDisabled"
@click="sureBatchImportBtnClick(importBatchFormRef)"
>
确定
</d-button>
import {FormInstance} from "element-plus";
const importBatchFormRef = ref<undefined | FormInstance>(undefined);
const sureBatchImportBtnClick = (formEl: FormInstance | undefined)=>{
formEl?.validate(valid=>{
if(valid){
serve.xxx
}
})
}
route
import {useRoute} from "vue-router"
const route = useRoute();
console.log(route.query.productId)
router
import {useRouter} from "vue-router"
const router = useRouter();
router.push({
path:"",
query:{}
})
watch 监听路由变化
import { watch } from 'vue'
import {useRouter} from "vue-router"
const router = useRouter();
watch(
() => router.currentRoute.value,
(newValue: any) => {
const { productId, projectId } = newValue.query
productDetailParams.value.productId = productId
productDetailParams.value.projectId = projectId
getProductDetail()
},
{ immediate: true }
)
deep:true
清楚副作用
provide/inject
import {provide} from "vue"
const test = ref<string>('1')
provide("componentInfo", test);
import {inject} from "vue"
const testInject = inject<string>('componentInfo')
console.log(testInject.value)