问答

Vue2函数式编程中如何调子组件方法

作者:admin 2021-04-22 我要评论

题目描述 Vue2函数式编程中如何调子组件方法 题目来源及自己的思路 在函数中编程中,render函数生成了一个组件,需要在响应事件中调用这个组件的一个方法,如代...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

题目描述

Vue2函数式编程中如何调子组件方法

题目来源及自己的思路

在函数中编程中,render函数生成了一个组件,需要在响应事件中调用这个组件的一个方法,如代码

相关代码

render(h, c){
  const Btn = h('el-button', {
    on: {
       click: () => {
          // 这里怎么调用el-form的validate方法
       }
    }
  }, '提交')
  // el-form 本身有个方法叫 validate, 
  // 通常用this.$refs.form.validate调用
  const vNode = h('el-form', { ... }, [ ..., Btn ])
  
}

你期待的结果是什么?实际看到的错误信息又是什么?

###

又看见你了哈哈,
不知道你是内部调用还是外部父组件调用,其实都差不多, 下面这个是 render组件调用的

<template>
  <div>
    <my-form :form="form"></my-form>
  </div>
</template>
    
  //... 
  data() {
    return {
      form: {
        username: 'admin'
      }
    }
  },
  components: {
    MyForm: {
      functional: true,
      props: {
        form: {
          type: Object,
          default: function() {
            return {
              username: 'admin'
            }
          }
        }
      },
      render(h, context) {
        const input = h('el-form-item', {
          props: {
            label: '用户名',
            prop: 'username'
          }
        }, [h('el-input', {
          props: {
            value: context.props.form.username
          },
          on: {
            input(value) {
              context.props.form.username = value
            }
          }
        })])
        const Btn = h('el-button', {
          on: {
            click: () => {
              // 这里怎么调用el-form的validate方法
              const refForm = context.parent.$refs.form
              refForm.validate((valid, ret) => {
                console.log(valid, ret)
                if (valid) return
                setTimeout(() => {
                  refForm.clearValidate()
                }, 1000)
              })
              console.log(this, context)
            }
          }
        }, '提交')
        // el-form 本身有个方法叫 validate,
        // 通常用this.$refs.form.validate调用
        return h('el-form', {
          ref: 'form',
          props: {
            model: context.props.form,
            rules: {
              username: {
                required: true,
                message: '请输入用户名',
                trigger: 'blur'
              }
            }
          }
        }, [input, Btn])
      }
    }
  },

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 求助!Mysql workbench connections出

    求助!Mysql workbench connections出

  • c++ 的dll 转golang可以调用

    c++ 的dll 转golang可以调用

  • c++的 new int{10}  和 new int(10) 有

    c++的 new int{10} 和 new int(10) 有

  • Grafana MySQL为数据源时, 折线图无法

    Grafana MySQL为数据源时, 折线图无法

腾讯云代理商
海外云服务器