当前位置:首页 > JavaScript

js实现组件

2026-03-14 08:00:52JavaScript

使用原生JavaScript实现组件

在原生JavaScript中创建组件可以通过自定义元素(Custom Elements)和Shadow DOM实现。以下是一个基础组件的实现示例:

class MyComponent extends HTMLElement {
  constructor() {
    super();
    this.attachShadow({ mode: 'open' });
    this.shadowRoot.innerHTML = `
      <style>
        :host {
          display: block;
          padding: 16px;
          border: 1px solid #ccc;
        }
      </style>
      <div class="component-content">
        <slot></slot>
      </div>
    `;
  }

  connectedCallback() {
    console.log('Component added to DOM');
  }
}

customElements.define('my-component', MyComponent);

使用React实现组件

React组件可以通过函数组件或类组件方式实现:

import React from 'react';

function FunctionalComponent(props) {
  return (
    <div className="functional-component">
      <h3>{props.title}</h3>
      <p>{props.children}</p>
    </div>
  );
}

class ClassComponent extends React.Component {
  render() {
    return (
      <div className="class-component">
        <h3>{this.props.title}</h3>
        <p>{this.props.children}</p>
      </div>
    );
  }
}

使用Vue实现组件

Vue单文件组件(SFC)的基本结构:

<template>
  <div class="vue-component">
    <h3>{{ title }}</h3>
    <p><slot></slot></p>
  </div>
</template>

<script>
export default {
  name: 'VueComponent',
  props: {
    title: {
      type: String,
      default: 'Default Title'
    }
  }
}
</script>

<style scoped>
.vue-component {
  border: 1px solid #42b983;
  padding: 16px;
}
</style>

组件通信模式

父子组件通信通过props和events实现:

// 父组件
function ParentComponent() {
  const handleChildEvent = (data) => {
    console.log('Received from child:', data);
  };

  return <ChildComponent onCustomEvent={handleChildEvent} />;
}

// 子组件
function ChildComponent({ onCustomEvent }) {
  const sendData = () => {
    onCustomEvent({ message: 'Hello from child' });
  };

  return <button onClick={sendData}>Send Data</button>;
}

组件生命周期管理

React类组件生命周期方法示例:

class LifecycleComponent extends React.Component {
  componentDidMount() {
    console.log('Component mounted');
  }

  componentDidUpdate(prevProps) {
    if (this.props.value !== prevProps.value) {
      console.log('Value prop changed');
    }
  }

  componentWillUnmount() {
    console.log('Component will unmount');
  }
}

组件状态管理

使用React Hooks管理状态:

js实现组件

import { useState, useEffect } from 'react';

function StatefulComponent() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    document.title = `Count: ${count}`;
  }, [count]);

  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>Increment</button>
    </div>
  );
}

标签: 组件js
分享给朋友:

相关文章

vue 实现组件刷新

vue 实现组件刷新

实现组件刷新的方法 在Vue中,组件刷新通常指重新渲染组件或重置组件状态。以下是几种常见的实现方式: 使用v-if控制渲染 通过v-if指令可以销毁并重新创建组件: <template>…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现图片轮播

js实现图片轮播

实现基础图片轮播 使用HTML、CSS和JavaScript创建一个简单的图片轮播。HTML部分定义轮播容器和图片,CSS设置样式和动画效果,JavaScript处理轮播逻辑。 <div cl…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Button…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…