【无标题】react组件封装

embedded/2024/10/21 7:05:09/

子组件制作

import { useState,useRef, useEffect} from "react"const Table = (data)=> {const {value ,option} = dataconsole.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.ppmy.cn/embedded/129203.html

相关文章

11.useComponentDidMount

在 React 的函数组件中,有时我们需要在组件首次挂载后执行某些操作,这在类组件中通常通过 componentDidMount 生命周期方法来实现。useComponentDidMount 钩子提供了一种简洁的方式来在函数组件中实现相同的功能。这个自定义钩子使得在组件挂载后执行一次性操作变得简单直观。…

vite的vue3项目配置

在使用 Vite 进行项目开发时&#xff0c;可以通过配置文件 vite.config.js 或 vite.config.ts 来自定义项目的构建和开发流程。以下是常见的 Vite 项目配置及其说明&#xff1a; 基本配置 // vite.config.js import { defineConfig } from vite; import vue from vitejs/plug…

使用LLM和RAG进行数据库查询(文本到SQL)的四大挑战及解决方案

大型语言模型&#xff08;LLM&#xff09;的出现展示了机器理解自然语言的能力。这些能力帮助工程师完成了许多令人惊叹的工作&#xff0c;比如编写代码文档和代码审查&#xff0c;而最常见的用例之一是代码生成&#xff1b;GitHub Copilot展示了AI理解工程师代码生成意图的能力…

诊断知识:NRC78(Response Pending)的回复时刻

文章目录 前言NRC78的使用场景客户需求解读Autosar Dcm中的定义工具链中的配置总结 前言 在项目开发过程中&#xff0c;客户变更需求&#xff0c;是关于NRC78的回复时间点的&#xff0c;该需求在Autosar Dem中也有对应的参数&#xff0c;DcmTimStrP2ServerAdjust&#xff08;针…

软件开发的项目管理的风险有哪些?

软件开发项目管理中可能面临的风险&#xff1a; 序号风险类型描述1需求不明确项目需求没有被清晰定义或频繁变更&#xff0c;导致开发方向不明确或需要重做工作。2技术风险采用的技术可能存在缺陷或不兼容&#xff0c;或者团队缺乏必要的技术技能。3资源不足项目可能因为人力…

Git的认识及基本操作

目录 一:Git的基本认识 二:Git的安装 三:Git的基本操作 1.创建本地仓库 2.配置Git 3.⼯作区、暂存区、版本库 4. 修改文件 5.版本回退 6.撤销修改 7.删除文件 一:Git的基本认识 1.实例引入 在日常当中我们常常会遇到这样的事&#xff0c;就是在做实验报告或者课设…

RTMP协议分析

理论 总体介绍 RTMP协议是应⽤层协议&#xff0c;是要靠底层可靠的传输层协议&#xff08;通常是TCP&#xff09;来保证信息传输的可靠性的。在基于传输层协议的链接建⽴完成后&#xff0c;RTMP协议也要客户端和服务器通过“握⼿”来建⽴基于传输层链接之上的RTMP Connection链…

如何将LiDAR坐标系下的3D点投影到相机2D图像上

将激光雷达点云投影到相机图像上做数据层的前融合&#xff0c;或者把激光雷达坐标系下标注的物体点云的3d bbox投影到相机图像上画出来&#xff0c;都需要做点云3D点坐标到图像像素坐标的转换计算&#xff0c;也就是LiDAR 3D坐标转像素坐标。 看了网上一些文章都存在有错误或者…