首页
学习
活动
专区
圈层
工具
发布

分享一篇关于弹框组件设计思考

在我们业务中,有非常多弹框的场景出现,我们会基于第三方弹框进行二次开发,或者复制粘贴开发业务,因此如何减少很多重复工作变得非常重要,因为弹框的模版代码太多,我们非常想改变这种现状,以下是一篇自己在业务上的思考...} from'@headlessui/react' import Modal1 from"@/app/components/modal1"; exportdefaultfunction Page()...,以及触发弹框的按钮文案,还有弹框内部内容,这样我们的弹框比以前更简单了。...Modal2> ) } 父组件调用弹框内部方法 在我们认为这个弹框组件非常好用时,有时候,你想在父组件通过事件打开这个弹框,因此你需要父组件调用子组件的方法,将这个组件能力变得更强了...总结 普通弹框在业务中的运用,以及二次封装一个弹框组件 将弹框所有应用的 state 封装到弹框内部,减少外部状态的重复定义 使用forwardRef与useImperativeHandle将父组件 ref

8900

Vue项目团队代码规范

,本文是记录一些在项目code review中常见的规范,仅供参考 JS部分 和渲染无关的数据 vue中data的数据默认便会进行双向数据绑定,若是将大量的和渲染无关的数据直接放置在data中,将会浪费双向数据绑定时所消耗的性能...,将这些和渲染无关的数据进行抽离并配合Object.freeze进行处理 table中columns数据可以单独提取一个外部js文件作为配置文件,也可以在当前.vue文件中定义一个常量定义columns...modal1: false, modal2: false, modal3: false, } } }) // good // 当...值为 modal1,modal2,modal3 } } }) debounce使用 例如远程搜索时需要通过接口动态的获取数据,若是每次用户输入都接口请求,是浪费带宽和性能的 当一个按钮多次点击时会导致多次触发事件...org.vue.components.folder-explorer.toolbar.tooltips.parent-folder')" @click="openParentFolder" /> 实体使用 html中展示一些如

1.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Vue版的团队代码规范

    ,提高代码阅读性、降低代码维护成本等,本文是记录一些在项目code review中常见的规范,仅供参考 JS部分 和渲染无关的数据 vue中data的数据默认便会进行双向数据绑定,若是将大量的和渲染无关的数据直接放置在...data中,将会浪费双向数据绑定时所消耗的性能,将这些和渲染无关的数据进行抽离并配合Object.freeze进行处理 table中columns数据可以单独提取一个外部js文件作为配置文件,也可以在当前...modal1: false, modal2: false, modal3: false, } } }) // good // 当...值为 modal1,modal2,modal3 } } }) debounce使用 例如远程搜索时需要通过接口动态的获取数据,若是每次用户输入都接口请求,是浪费带宽和性能的 当一个按钮多次点击时会导致多次触发事件...org.vue.components.folder-explorer.toolbar.tooltips.parent-folder')" @click="openParentFolder" /> 实体使用 html中展示一些如

    1.1K30

    检测自己网站是否被嵌套在iframe下并从中跳出

    iframe被用于将一个网页嵌套在另一个网页中,有的时候这会带来一些安全问题,这时我们就需要一些防嵌套操作了。 本文分为俩部分,一部分讲解如何检测或者禁止嵌套操作,另一部分讲解如何从嵌套中跳出。...末尾放了正在使用的完整代码,想直接用的可以拉到最后。 效果 当存在嵌套时会出现一个蒙版和窗口,提示用户点击。 点击后会在新窗口打开网站页面。...它有3个可选值: DENY:拒绝所有 SAMEORIGIN:只允许同源 ALLOW-FROM origin:指定可用的嵌套域名,新浏览器已弃用 后端检测(以PHP为例) 通过获取$_SERVER中的HTTP_REFERER...== window.top) { // 检测到嵌套时该干的事 } 从嵌套中跳出 跳出只能是前端处理,如果使用了PHP等后端检测,可以直接返回前端JavaScript代码,或者HTML的A标签设置转跳...= 'overlay1'; // 创建窗口元素 var modal = document.createElement('div'); modal.className = 'modal1

    1K20

    React Native推送通知:完整的操作指南

    在这篇文章中,我们将看到如何在React Native应用中创建和发送推送通知。 什么是推送通知? 推送通知是从应用程序发送到已安装该应用的用户的消息或警报。...React Native 中的推送通知架构 在我们深入了解如何在 React Native 应用中实现推送通知的技术细节之前,理解React Native推送通知的工作原理可能会有所帮助。...演示:如何在 React Native 中设置推送通知 要在React Native应用程序中使用推送通知,我们首先需要注册应用程序以获取推送通知令牌。这个令牌是一个长字符串,可以唯一标识每个设备。...如果你访问Expo的文档,你会找到关于如何在许多语言中实现服务器上的推送通知的信息。 在这个教程中,我将使用一个Node.js服务器。...我们还学习了如何在 React Native 应用程序中发送推送通知,方法是添加通知令牌,从服务器发送它们,并使用 Expo 通知 API 在用户设备上显示它们。

    5.8K10

    检测自己网站是否被嵌套在iframe下并从中跳出

    iframe被用于将一个网页嵌套在另一个网页中,有的时候这会带来一些安全问题,这时我们就需要一些防嵌套操作了。本文分为俩部分,一部分讲解如何检测或者禁止嵌套操作,另一部分讲解如何从嵌套中跳出。...末尾放了正在使用的完整代码,想直接用的可以拉到最后。效果当存在嵌套时会出现一个蒙版和窗口,提示用户点击。点击后会在新窗口打开网站页面。...它有3个可选值:DENY:拒绝所有SAMEORIGIN:只允许同源ALLOW-FROM origin:指定可用的嵌套域名,新浏览器已弃用后端检测(以PHP为例)通过获取$_SERVER中的HTTP_REFERER...== window.top) { // 检测到嵌套时该干的事}从嵌套中跳出跳出只能是前端处理,如果使用了PHP等后端检测,可以直接返回前端JavaScript代码,或者HTML的A标签设置转跳。...link = document.createElement('a');link.href = 'https://www.9kr.cc';link.target = '_blank'; // 在新窗口中打开链接

    1.9K40

    使用React创建一个web3的前端

    我们还探讨了如何在 etherscan 上验证我们的合约,并使自己和用户能够直接从合约的 etherscan 页面调用函数。...然而,大多数严肃的项目倾向于部署他们自己的网站,并允许用户直接从网站上铸币。 这正是我们将在本教程中涉及的内容。...如果没有,强烈建议你先看一下React 网站的官方教程[6]。 设置项目 让我们从使用create-react-app创建一个 React 项目开始。...连接 Metamask 钱包 为了让用户能够从我们的合约中调用功能,他们需要能够将他们的钱包连接到我们的网站。钱包将使用户能够支付 Gas 和销售价格,以便从我们的集合中铸造一个 NFT。...在本教程中,我们将专门使用 Metamask 钱包和它的一套 API。有一些现成的解决方案,如Moralis[10]和web3modal[11],允许你用很少的代码添加对多个钱包的支持。

    2.5K30

    Web 性能优化: 使用 React.memo() 提高 React 组件性能

    在浏览器中运行我们的程序,并多次单击 Click Me 按钮,会看到在控制打印很多次信息: 在我们的控制台中有 “componentWillUpdate” 和 “componentWillUpdate”...在我们的浏览器中测试,我们看到我们的初始渲染: 如果我们多次点击 click Me 按钮,我们只会得到: componentWillUpdate componentDidUpdate 我们可以从 React...试它,重新加载你的浏览器,并点击多次点击 Click Me 按钮: 现在,我们已经看到如何在 React 中优化类组件中的重新渲染,让我们看看我们如何在函数组件中实现同样的效果。...打开 DevTools 并单击 React 选项。在这里,更改 TestC 组件的 count 为 5....(TestC); 打开浏览器并加载应用程序,打开 DevTools 并单击 React 选项,选择 。

    6.4K41

    微信小程序开发实战(16):交互组件

    使用ActionSheet会从当前窗口底部往上弹出一个窗口,可以在该窗口放置任何组件,例如,如图1所示的一排按钮。 ?...通过bindchange属性指定一个事件函数,当点击“取消”按钮或ActionSheet外部区域,会调用该函数,通常在该函数中隐藏ActionSheet。 下面是完整的JavaScript实现代码。...Console中输出如图2所示的日志信息。...图2 点击“取消”按钮输出的日志信息 在标签中可以放置任何组件,例如,下面的布局代码除了前面的5个按钮外,还放置了一个标签。...图3 带图像的ActionSheet 2 对话框 在小程序中,对话框需要使用标签。与Android、iOS不同的是,这些对话框需要实现摆放在布局文件中,默认是隐藏状态。

    1.1K20

    实战 | Change Detection And Batch Update

    为了更好的观察出React的更新机制,我们将点击按钮的逻辑换成下面的代码: 打开控制台,点击按钮你会发现打印了0 0,同时页面数据也更新成了2。...我们别急着下结论,我们知道应用程序状态的改变主要是下面三种情况引起的: Events - 如点击按钮 Timers - 如setTimeout XHR - 从服务器获取数据 我们才测试了事件这一种情景,...我们再试试第三种情景XHR,将点击按钮的逻辑换成下面的代码: 打开控制台,点击按钮你会发现打印的还是1 2,这究竟是什么情况?...为了验证这个的猜想,我们试着在React的生命周期方法中连续调用setState 打开控制台你会发现打印了0 0,更加验证了我们的猜想,因为生命周期方法也是React调用的。...我们还是从应用程序状态改变的三种情景来看 : 打开控制台,点击按钮会发现打印0 0,说明Vue并不是立马更新的,走的是批量更新。

    4.2K20

    基于 ChatGPT 和 React 搭建 JSON 转 TS 的 Web 应用

    Dotenv 是一个零依赖模块,它将环境变量从 .env 文件加载到 process.env 中。...for React 是一个十分简单的包,用于将代码编辑器添加到 React 应用程序,而 React Copy to Clipboard 包允许我们通过单击按钮复制和粘贴内容从 React 应用程序中删除多余的文件...的附加 props,由于它是只读的,因此会禁止用户编辑它的值如何在 Node.js 中与 ChatGPT 进行通信===========================在本节中,你将学习如何通过 Node.js...接下来,让我们添加一些额外的功能,例如通过单击按钮复制所有 Typescript 代码以及通过单击按钮清除输入编辑器的所有内容的能力。...React 应用程序中添加高效的代码编辑器如何在 Node.js 中与 ChatGPT 通信如何在 React 中单击按钮时复制与删除内容本教程完成一个可以使用 ChatGPT API 构建的应用程序示例

    1.1K10

    【Java 进阶篇】JavaScript 介绍及其发展史

    本篇博客将为你详细介绍JavaScript的基础知识、历史背景和它在Web开发中的重要作用。我们还将讨论JavaScript的发展史,从它的起源一直到现在的现代JavaScript。...这为动态网页开发打开了大门。 ES5: 2009年,ECMAScript 5发布。它引入了一些重要的新功能,如"strict mode"(严格模式)和JSON支持。 3....JavaScript 示例 下面是一个简单的JavaScript示例,演示如何在HTML中使用JavaScript来创建一个点击按钮: <!...; }); 在这个示例中,我们使用JavaScript获取HTML元素,添加事件监听器,并在按钮被点击时更改页面上的文本。...如果你想深入学习JavaScript,不仅可以从基础语法开始,还可以探索其各种框架和库,如React、Angular、Vue等,以提高你的Web开发技能。

    64230

    如何测试驱动开发 React 组件?

    本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...Confirmation 组件的特点: Confirmation 标题 确认描述 —— 接收外部程序想要确认的问题 一个确认的按钮,支持外部回调函数 一个取消的按钮,支持外部回调函数 这两个按钮都不知道点击时接下来要做什么事...例如点击的按钮,就是 role="button" ;会让这个元素可点击;也可以使用 role 属性告诉辅助设备(如屏幕阅读器)这个元素所扮演的角色。...动态问题测试 这个问题也是动态的,这样它就可以从组件外部传入。...现在我们得到了我们想要的组件渲染的 HTML ,现在我想要确保我可以从外部传递这个组件的按钮的回调函数,并确保它们在单击按钮时被调用。

    2.6K10

    如何测试驱动开发 React 组件?

    本文将以创建一个 Confirmation 组件来说明,如何在 React 中如何实现测试驱动开发。...Confirmation 组件的特点: Confirmation 标题 确认描述 —— 接收外部程序想要确认的问题 一个确认的按钮,支持外部回调函数 一个取消的按钮,支持外部回调函数 这两个按钮都不知道点击时接下来要做什么事...例如点击的按钮,就是 role="button" ;会让这个元素可点击;也可以使用 role 属性告诉辅助设备(如屏幕阅读器)这个元素所扮演的角色。...动态问题测试 这个问题也是动态的,这样它就可以从组件外部传入。...现在我们得到了我们想要的组件渲染的 HTML ,现在我想要确保我可以从外部传递这个组件的按钮的回调函数,并确保它们在单击按钮时被调用。

    2.7K10

    5个提升开发效率的必备自定义 React Hook,你值得拥有

    1、用useLocalStorage轻松管理浏览器存储 在实际工作中,我们常常需要在React应用中管理浏览器存储。这不仅能提升用户体验,还能让用户的数据在页面刷新后依然保留。...那么,如何在React中优雅地实现响应式设计呢? 问题与需求 假设你正在开发一个网站,需要在不同的设备上展示不同的布局。例如,当用户在手机上浏览时,显示为移动视图;而在桌面设备上,则显示为桌面视图。...直接写CSS媒体查询虽然可以实现,但在React中管理这些逻辑显得不够优雅和灵活。那么,有没有一种更好的方法呢?...在实际开发中,这种自定义Hook能显著提升我们的开发效率。 5、用useToggle轻松管理布尔状态 在React开发中,管理布尔值状态(如模态框的开关、开关按钮的状态等)是一个常见且繁琐的任务。...无论是模态框的显示与隐藏,还是开关按钮的状态管理,useToggle都能派上用场。 结束 自定义React Hook是非常强大的工具,可以显著提升我们的开发体验。

    94510

    react 基础操作-语法、特性 、路由配置

    react 函数组件避坑 react 函数组件中定义变量 i = 0,页面模板上使用 i 变量,在按钮点击事件函数中修改 i++,但是页面上没有渲染,怎么回事?...以下是一个示例,展示如何在 React 函数组件中更新并渲染一个计数器: import React, { useState } from "react"; function MyComponent()...最后,我们在 JSX 中展示了计数器的值,每次点击按钮时计数器会自动增加并重新渲染。 通过使用状态管理,在函数组件中更新值并触发重新渲染,可以实现页面内容的动态更新。...以下是一个示例,展示如何在 React 组件中阻止事件默认传播: function MyComponent() { const handleClick = (event) => { event.stopPropagation...需要注意的是,React Router v6 的 API 和用法与之前的版本(如 v5)有很大的变化。

    1.4K20

    【React】406- React Hooks异步操作二三事

    如何在组件加载时发起异步任务 这类需求非常常见,典型的例子是在列表组件加载时发送请求到后端,获取列表后展现。 发送请求也属于 React 定义的副作用之一,因此应当使用 useEffect 来编写。...这个接口的兼容性不错,除了 IE 之外全都兼容(如 Chrome, Edge, FF 和绝大部分移动浏览器,包括 Safari)。...如何在组件交互时发起异步任务 另一种常见的需求是要在组件交互(比如点击某个按钮)时发送请求或者开启计时器,待收到响应后修改数据进而影响页面。...从 React Hooks 的源码来看,它返回的是 [hook.memorizedState,dispatch],对应我们接的值和变更方法。...(即读的是旧值,但写的是新值,不是同一个) 如果觉得阅读 Hooks 源码有困难,可以从另一个角度去理解:虽然 React 在 16.8 推出了 Hooks,但实际上只是加强了函数式组件的写法,使之拥有状态

    6.2K20

    『React Navigation 3x系列教程』createBottomTabNavigator开发指南

    BottomTabNavigatorConfig(可选):配置导航器的路由(如:默认首屏,navigationOptions,paths等)样式(如,转场模式mode、头部模式等)。...paths: 提供routeName到path config的映射,它覆盖routeConfigs中设置的路径。 backBehavior: 后退按钮是否会导致标签切换到初始tab?...如果您没有选项卡的标签,建议设置此项; tabBarTestID:用于在测试中找到该选项卡按钮的 ID; 提示:和本文配套的还有一个React Navigation3x的视频教程,欢迎学习。...TabNavigator的时候; 初始化传参:如何在设置页面的时候传递参数呢?...大家在学习使用React Navigation3x过程中遇到任何问题都可以在React Navigation3x的视频教程中寻找答案哈。

    8.4K30
    领券