当前位置:首页 > VUE

vue功能组件实现

2026-01-19 14:57:52VUE

Vue 功能组件实现

定义组件

功能组件通常是无状态(stateless)且无实例(no-instance)的组件,仅通过 props 接收数据并渲染内容。使用 functional: true 标记组件为功能组件。

export default {
  functional: true,
  props: ['message'],
  render(h, { props }) {
    return h('div', props.message);
  }
}

使用插槽

功能组件可以通过 slots() 访问插槽内容,动态渲染子元素。

export default {
  functional: true,
  render(h, { slots }) {
    return h('div', slots().default);
  }
}

上下文参数

render 函数的第二个参数是上下文对象,包含以下属性:

  • props:组件接收的 props
  • children:子节点(等同于 slots().default
  • data:传递给组件的整个数据对象
  • parent:父组件实例
export default {
  functional: true,
  render(h, { props, children }) {
    return h('button', { on: { click: props.onClick } }, children);
  }
}

高阶函数组件

通过工厂函数生成功能组件,实现逻辑复用。

function createFunctionalComponent(options) {
  return {
    functional: true,
    ...options
  };
}

const MyComponent = createFunctionalComponent({
  props: ['count'],
  render(h, { props }) {
    return h('span', `Count: ${props.count}`);
  }
});

性能优化

功能组件没有实例化过程,适合渲染大量静态内容或列表项。通过避免响应式数据绑定和生命周期钩子,减少性能开销。

export default {
  functional: true,
  props: ['items'],
  render(h, { props }) {
    return h('ul', props.items.map(item => h('li', item.text)));
  }
}

与普通组件对比

普通组件通过 this 访问实例属性和方法,而功能组件通过上下文参数传递数据。功能组件更适合纯展示型逻辑,普通组件适合需要状态管理的场景。

vue功能组件实现

标签: 组件功能
分享给朋友:

相关文章

vue穿梭框组件实现

vue穿梭框组件实现

实现基础穿梭框组件 在Vue中实现穿梭框组件,可以使用<el-transfer>(Element UI)或手动实现。以下是手动实现的核心逻辑: <template> &l…

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件的…

vue实现折叠组件

vue实现折叠组件

Vue 折叠组件实现方法 基于 v-show 和事件触发 通过 v-show 控制内容的显示与隐藏,结合点击事件切换状态。 <template> <div> &…

vue实现组件封装

vue实现组件封装

Vue 组件封装方法 封装组件的基本步骤 创建独立的 .vue 文件,包含 template、script 和 style 三个部分。通过 props 接收父组件传递的数据,使用 $emit 触发自…

vue radio组件实现

vue radio组件实现

Vue Radio 组件实现 在 Vue 中实现 Radio 组件可以通过原生 HTML 的 <input type="radio"> 结合 Vue 的响应式特性,或者使用第三方 UI 库…

vue实现注册功能

vue实现注册功能

实现注册功能的基本步骤 在Vue中实现注册功能通常需要结合前端表单和后端API交互。以下是常见的实现方式: 创建注册表单组件 <template> <div class…