当前位置:首页 > 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
分享给朋友:

相关文章

js实现轮播

js实现轮播

实现轮播图的基本思路 轮播图的核心逻辑是通过定时切换展示的图片或内容,通常结合左右滑动按钮和指示器(小圆点)增强交互性。以下是基于原生JavaScript的实现方法。 HTML结构 构建轮播图的HT…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js实现选题

js实现选题

实现选题功能的JavaScript方法 基础实现方案 使用数组存储选项,通过随机索引选取: const options = ['选项A', '选项B', '选项C', '选项D']; const r…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…