vue 之 render函数 封装 input组件

vue 之 render函数 封装 input组件

父组件

    <div>val1-{{ val1 }} ; val2 -{{ val2 }} ; val3-{{ val3 }}</div>
    <Input v-model="val1" placeholder="请输入1" type="text" :style="`fontSize: 20px`" />
    <Input v-model="val2" placeholder="请输入2" type="number" />
    <Input v-model="val3" placeholder="请输入3" type="password" />

      val1: '',
      val2: 2,
      val3: '',

Input.vue

<script>
const selectInputType = [
  'input',
  'text',
  'number',
  'password',
  'email',
  'textarea'
]
export default {
  name: 'Input',
  props: {
    type: {
      default: 'text',
      type: String,
      validator: typeVal => {
        return selectInputType.includes(typeVal)
      }
    },
    value: {
      default: '',
      type: [String, Number]
    }
  },
  computed: {
    newValue: {
      get({ value }) {
        return value
      },
      set(val) {
        this.$emit('input', val)
      }
    }
  },
  methods: {
    onInputHandle(val) {
      this.newValue = val
    }
  },
  render(createElement) {
    return createElement(
      // 标签
      'el-input',
      // 相关属性参数
      {
        // 样式相关
        style: {
        },
        // html 相关的属性 placeholder id 等
        attrs: {
          ...this.$attrs //  ( { placeholder:请输入 } )
        },
        // props相关的
        props: {
          type: this.type,
          value: this.newValue
        },
        // 事件相关
        on: {
          input: this.onInputHandle
        }
      }
    )
  }
}
</script>
<style lang="scss" scoped></style>

效果

在这里插入图片描述

事件

@change.native=“changeVal” @input.native=“inputMethod”

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vuerender 函数Vue 组件渲染的核心,通过 render 函数可以实现更加灵活的组件编写方式。下面是关于 Vuerender 函数的详细介绍: 1. 概念定义: Vuerender 函数是一个纯 JavaScript 函数,它接收一个 createElement 函数作为参数,用于生成虚拟 DOM,最终将组件渲染成 HTML。在 Vue 组件中,可以使用 render 函数来代替 template,这样可以更加灵活地渲染组件。 2. createElement 函数: createElement 函数Vue 中的一个工厂函数,用于快速创建虚拟 DOM 元素。createElement 函数接收三个参数,第一个参数是标签名或组件,第二个参数是属性对象,第三个参数是子节点。 使用 createElement 函数可以快速创建虚拟 DOM 元素,例如: ```javascript // 创建一个 div 元素 createElement('div', { class: 'wrapper' }, [ createElement('h1', {}, 'Hello Vue') ]) ``` 3. Vue 组件render 函数Vue 组件render 函数接收一个 createElement 函数作为参数,通过该函数创建虚拟 DOM 元素。在 render 函数中,通过编写 JavaScript 代码来生成 DOM 元素,可以使用条件判断、循环语句等,从而实现更加灵活的组件渲染。 例如,下面是一个简单的 render 函数: ```javascript render (createElement) { return createElement('div', { class: 'wrapper' }, [ createElement('h1', {}, 'Hello Vue') ]) } ``` 4. render 函数与 template 的对比: 相对于 template,render 函数的优点在于:可以使用 JavaScript 代码生成 DOM 元素,可以进行条件判断、循环语句等;可以实现更加灵活的组件开发;可以更好地控制组件的渲染流程。 相对于 template,render 函数的缺点在于:需要熟悉 JavaScript 语法和 createElement 函数;在实现复杂组件时,需要编写更多的代码。 5. render 函数和 JSX: JSX 是 Facebook 出品的一种语法扩展,可以在 JavaScript 中编写类似 HTML 的语言。与 render 函数类似,JSX 也是将组件编写成 JavaScript 代码的方式。 Vue 也支持 JSX 语法,Vue 的 JSX 实现是通过 Babel 插件实现的。使用 JSX 可以更加直观地编写组件,但需要熟悉 JSX 语法和相关工具的使用。 6. 总结: render 函数Vue 组件的核心,它通过 createElement 函数创建虚拟 DOM 元素,最终将组件渲染成 HTML。相对于 template,render 函数可以实现更加灵活的组件开发,但需要熟悉 JavaScript 语法和 createElement 函数。同时,Vue 也支持 JSX 语法,可以更加直观地编写组件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值