Skip to content

微信小程序vue3 setup 使用 uni-forms 组件ref获取表单验证validate of null #423

Open
@hanxzi

Description

@hanxzi

uni-app中使用vue3 setup写法编译到微信小程序表单验证ref获取不到

<template>
  <uni-forms ref="valiForm" :rules="rules" :modelValue="valiFormData">
    <uni-forms-item label="姓名" required name="name">
	    <uni-easyinput v-model="valiFormData.name" placeholder="请输入姓名" />
    </uni-forms-item>
	    <button type="primary" size="mini" @click="onSubmit">提交</button>
    </uni-forms>
</ template>
<script>
  import { ref, reactive } from 'vue'
   export default {
       setup(props,context) {
		const valiForm = ref(null)
			const valiFormData = reactive({
					name: '',
			})
			const rules = reactive({
				name: {
					rules: [{
						required: true,
						errorMessage: '姓名不能为空'
					}]
				},
			})
			
			const onSubmit = () => {
				valiForm.value.validate().then(res => {
					console.log("values", valiFormData);
				}).catch(err => {
					console.log('err', err);
				})
			}
			
			return {
				onSubmit,
				rules,
				valiForm,
				valiFormData,
			}
		}
	}
</script>

image

按照vue3官方按照获取ref代码测试

<template> 
  <div ref="root">This is a root element</div>
</template>

<script>
  import { ref, onMounted } from 'vue'

  export default {
    setup() {
      const root = ref(null)

      onMounted(() => {
        // DOM 元素将在初始渲染后分配给 ref
        console.log(root.value) // <div>This is a root element</div>
      })

      return {
        root
      }
    }
  }
</script>

编译在微信小程序里面console.log()输出的内容依旧是null, 在h5测试结果正常

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions