3***@qq.com
3***@qq.com
  • 发布:2021-07-09 16:22
  • 更新:2024-10-12 17:38
  • 阅读:2390

【报Bug】form 里面设置 $ref 报错

分类:uni-app

产品分类: uniapp/小程序/字节跳动

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: 10.15.7

HBuilderX类型: Alpha

HBuilderX版本号: 3.1.22

第三方开发者工具版本号: 3.1.1

基础库版本号: 所有

项目创建方式: HBuilderX

示例代码:

<u-form :model="form" ref="uForm">
<u-form-item label="手机" prop="mobile">
<u-input v-model="form.mobile" class="u-border-bottom"/>
</u-form-item>
</u-form>

this.$refs.uForm.setRules(this.rules);

操作步骤:

页面进入即报错
onReady() {
this.$refs.uForm.setRules(this.rules);
},

预期结果:

正常

实际结果:

Error in onReady hook: "TypeError: Cannot read property 'setRules' of undefined"

bug描述:

代码:
this.$refs.uForm.setRules(this.rules);

提示报错
Error in onReady hook: "TypeError: Cannot read property 'setRules' of undefined"

2021-07-09 16:22 负责人:无 分享
已邀请:
3***@qq.com

3***@qq.com

我也是这个问题,解决了没

l***@163.com

l***@163.com

不知道自己是不是穿越了,忘记在哪里看到的说是要在onReady()里写this.$refs.uForm.setRules(this.rules);
自己后来遇到的时候在onReady()怎么写都报错"TypeError: Cannot read property 'setRules' of undefined"。
但是在mounted()里没问题。

  • 9***@qq.com

    没用啊,有解决方案了么,我直接创建hello uniapp的项目,里面的就没问题

    2022-09-29 14:29

9***@qq.com

9***@qq.com

一样的问题,有解决方法了么

w***@163.com

w***@163.com

求问,解决了吗?

4***@qq.com

4***@qq.com

都2023年了,这个问题还在,笑死人了 Error in onReady hook: "TypeError: Cannot read property 'setRules' of undefined"

x***@kq1997.net

x***@kq1997.net

俺也碰到这个问题了

YUANRJ

YUANRJ

提供下测试工程

8***@qq.com

8***@qq.com

也碰到这问题

  • 靐齉齾麤龖龗

    不要取同组件名字相同的ref

    2024-10-12 17:41

  • 8***@qq.com

    回复 靐齉齾麤龖龗: ref名称改了也还是一样报undefine

    2024-10-14 09:38

  • 靐齉齾麤龖龗

    回复 8***@qq.com: 截图看看呢。。或者你把你的代码贴出来

    2024-10-14 10:00

  • 8***@qq.com

    回复 靐齉齾麤龖龗:

    const skuForm = ref()

    const skuRules = ref({

    price: {

    rules: [

    { required: true, errorMessage: '请填写产品价格' },

    {

    validateFunction: function (rule: any, value: any, data: any, callback: any) {

    if (value < productStore.product!.minPrice!) {

    callback('所填价格低于最低起售价' + ${productStore.product!.minPrice!}元)

    }

    return true

    },

    },

    ],

    },

    })

    onReady(() => {

    skuForm.value.setRules(skuRules.value)

    })

    <uni-forms :model="skuInfo" ref="skuForm" :rules="skuRules" validate-trigger="blur">

    <uni-forms-item label="价格" name="price">

    <uni-easyinput v-model.number="skuInfo.price" type="number" placeholder="请填写产品价格" />

    </uni-forms-item>

    </uni-forms>

    大致这样

    2024-10-17 16:47

  • 靐齉齾麤龖龗

    回复 8***@qq.com: 你是哪个端的啊?是mac系统还是windows系统的呢?

    2024-10-17 16:53

  • 8***@qq.com

    回复 靐齉齾麤龖龗: windows

    2024-10-17 16:55

  • 靐齉齾麤龖龗

    回复 8***@qq.com: 编译到哪个端的呢

    2024-10-17 16:58

  • 8***@qq.com

    回复 靐齉齾麤龖龗: 解决了,有些表单项的name没有写在rules里面,导致校验不起作用,虽然还是报setRules undefined,但补全后校验起效了

    2024-10-17 17:02

  • 8***@qq.com

    回复 靐齉齾麤龖龗: 小程序

    2024-10-17 17:03

要回复问题请先登录注册