当前位置:首页 > 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}`);
  }
});

性能优化

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

vue功能组件实现

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

与普通组件对比

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

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

相关文章

h5实现点击复制功能

h5实现点击复制功能

使用document.execCommand方法(兼容旧浏览器) 通过document.execCommand('copy')实现复制功能,需先选中文本内容。创建一个隐藏的textarea或input…

vue实现组件跟随

vue实现组件跟随

Vue 实现组件跟随效果 实现组件跟随效果通常需要监听鼠标或触摸事件,动态更新组件位置。以下是几种常见实现方式: 使用鼠标事件绑定 <template> <div class=…

vue实现答题功能

vue实现答题功能

Vue实现答题功能 数据准备 创建一个包含题目、选项和正确答案的数据结构,通常是一个数组对象。每个题目对象包含问题文本、选项数组和正确答案索引。 const questions = [ {…

php实现评论功能

php实现评论功能

数据库设计 创建评论表(示例结构): CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id`…

h5实现手机摇一摇功能

h5实现手机摇一摇功能

实现原理 手机摇一摇功能基于设备加速度传感器(DeviceMotionEvent),通过监听设备的加速度变化来判断用户是否进行了摇晃动作。HTML5提供了相关API获取设备传感器数据。 基本实现步骤…

vue 组件实现 遮罩

vue 组件实现 遮罩

Vue 组件实现遮罩层的方法 基础遮罩层实现 创建一个简单的遮罩层组件,使用绝对定位覆盖整个视口。以下是一个基础实现: <template> <div class="mask"…