【无标题】react组件封装

news/2024/10/16 18:26:40 标签: javascript, 前端, react.js

子组件制作

import { useState,useRef, useEffect} from "react"



const Table = (data)=> {

   const {value ,option} = data

   console.log(value)
   const [stata,setValue]  = useState()
   const  useRefs = useRef(value)


    useEffect(()=> {
        useRefs.current.value  = value 
    })
    const addGetvalue = () => {
       console.log(useRefs)
    }
    const table = ()=> {
           return <><input  ref={useRefs} onChange={(event)=> { 
            
            
            useRefs.current = event.target.value 
            option && option(event.target.value)

             }}/>4444444<button onClick={()=> {addGetvalue()}}> 初始化数据 </button></>
    }

    
    return  {table,addGetvalue}
}
export default Table

父组件制作

import logo from './logo.svg';
import './App.css';
import  tableaaa from './component/hooks/tableSwitch'
import { useRef ,useState} from 'react';
function App() {
  const {table,addGetvalue} = tableaaa({value:"llllll"})
  const newRef = useRef()
  const [state,setState] = useState()


  const text =  (changeValue)=> {
    const {table,addGetvalue} = tableaaa({value:"",option:changeValue})
    return table()
  }

  const changeValueOne = (value)=> {
      console.log("测试1事件",value)
  }
  const changeValueTow = (value)=> {
    console.log("测试2事件",value)
  }
  const changeValuethree = (value)=> {
  console.log("测试3事件",value)
  }
  const changeValuedao = (value)=> {
  console.log("测试4事件",value)
 }



  return (
    <div className="App">
      
         {table()}



         {text(changeValueOne)}
         {text(changeValueTow)}
         {text(changeValuethree)}
         {text(changeValuedao)}


        {/* <button onClick={()=> {addGetvalue()} }>kkkkkkkkkkkkkkkkkkkkkkkk</button> */}
    </div>
  );
}

export default App;

好处,每个组件都是独立的,子组件子负责样式的渲染,父组件子负责数据的处理维护

问题:项目过大,组件引用混乱,改动一处,好几处不能使用,这种组件之间的事件都是独立相互之间不会影响


http://www.niftyadmin.cn/n/5708341.html

相关文章

D35【python 接口自动化学习】- python基础之输入输出与文件操作

day35 文件合并 学习日期&#xff1a;20241012 学习目标&#xff1a;输入输出与文件操作&#xfe63;-47 如何使用python合并多个文件&#xff1f; 学习笔记&#xff1a; 合并文件需求分析 合并两个文件 代码实现 # 合并两个文件 with open(demo1.txt) as f1:file_data_1f…

仿 Mac 个人网站开发 |项目复盘

一、前言 1.1 灵感来源 早年有幸看到国外大佬做的一个 基于 Web 的 Windows XP 桌面娱乐系统, 那时刚好有搭建一个个人博客的想法, 所以就想是否可以基于 WEB 实现一个仿 Mac UI 的个人博客, 以应用的形式来展示博客各个功能! 1.2 相关链接(求个 Star) 前端开源代码后端开源…

第二十七篇:传输层讲解,TCP系列一

一、传输层的功能 ① 分割与重组数据 传输层也要做数据分割&#xff0c;所以必然也需要做数据重组。 ② 按端口号寻址 IP只能定位数据哪台主机&#xff0c;无法判断数据报文应该交给哪个应用&#xff0c;传输层给每个应用都设置了一个编号&#xff0c;这个编号就是端口&…

【C++刷题】力扣-#66-加一

题目描述 给定一个非负整数数组 digits&#xff0c;表示一个非负整数。每次操作将整个数组增加 1&#xff08;即加一操作&#xff09;。你需要找出加一操作后的数组表示。 示例 示例 1 输入: digits [1,2,3] 输出: [1,2,4] 解释: 数组表示数字 123&#xff0c;加一操作后变为…

黑龙江等保测评:APP安全性的重要性与实施策略

在数字化时代&#xff0c;信息安全已成为各类应用程序&#xff08;APP&#xff09;开发与运营中不可忽视的重要环节。尤其是在黑龙江省&#xff0c;随着网络安全等级保护&#xff08;等保&#xff09;政策的逐步落实&#xff0c;APP的等保测评也逐渐成为企业合规的重要组成部分…

令人惊叹的超前城市规划,竟是200年前的设计

在世界的建筑版图上&#xff0c;西班牙巴塞罗那以其独特的城市规划和丰富的文化遗产&#xff0c;成为了无可争议的“建筑界最疯狂的城市”。 这座城市&#xff0c;仿佛被一位天才建筑师精心雕琢&#xff0c;每一个角落都散发着独特的魅力与疯狂。 超前的城市规划 最令人惊叹…

Dify实现text2sql工作流[SQL调用篇],并查询Postgres数据库 or Mysql数据库(docker容器)

Dify 实现text2sql,查询Postgres数据库 1.Postgres数据库设置 1.1.docker-compose.yml修改 为了让 sandbox 容器能够与 docker-db-1 容器互相通信,你需要确保几个条件得到满足: 网络配置:确保 sandbox 和 db 都位于同一个 Docker 网络中。如果它们不在同一个网络中,数据…

MySQL数据库从入门到精通 第1讲 基本概念

MySQL数据库从入门到精通 第1讲 基本概念 小可爱们&#xff0c;接下来我们要学习的知识是数据库相关的知识&#xff0c;从本贴开始&#xff0c;从0基础带大家入门到精通&#xff0c;要加油哦~ 1 前言 1.1 为什么要学习数据库&#xff1f; 那我们首先要搞清楚第一个问题&…