react签字功能 react-signature-canvas

news2024/11/15 13:33:19

react签字功能 react-signature-canvas

.

前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的。包括语音识别、机器翻译等从基础到实战都有,很详细,分享给大家。大家及时保存,说不定啥时候就没了。

.

效果

在这里插入图片描述

插件地址

react-signature-canvas

代码

1、安装 react签字功能 react-signature-canvas

npm install react-signature-canvas

或者使用yarn,都是ok的

2、使用

index.jsx

import React from 'react';
import './sign.less'
import { Button, } from 'antd-mobile'
import { useEffect, useState, useRef, } from "react";
import SignatureCanvas from 'react-signature-canvas';

function SignWrite() {
  const sigCanvas = useRef({});

  const clearCanvas = () => {
    sigCanvas.current.clear();
  };

  const getCanvasImage = () => {
    const base64Img = sigCanvas.current.getTrimmedCanvas().toDataURL("image/png");
    console.log(base64Img); // This is the base64 string representation of the signature
  };
  
  return (
    <div className = 'signContent'>
      <div className="writeContent">
      <SignatureCanvas
        penColor="black"
        canvasProps={{ className: "sigCanvas" }}
        ref={sigCanvas}
      />
      </div>
      <div className="btnGroup">
        <Button onClick={clearCanvas}>Clear</Button>
        <Button onClick={getCanvasImage}>Save</Button>
      </div>
    </div>
  );
}

export default SignWrite;

sign.less

.sigCanvas {
  width: 100%;
  height: calc(100vh - 158px);
}

In this example, we import SignatureCanvas from the package, create a ref to the canvas element, and add a button that clears the canvas when clicked. We pass penColor and canvasProps as props to the SignatureCanvas component, and then add the reference to sigCanvas.

we have added a new function called getCanvasImage which retrieves the base64 string of the trimmed canvas image. We call this function when the “Save” button is clicked.

You can customize the penColor and canvasProps to fit your needs. For instance, you can change the width and height of the signature canvas to adjust the size of the signature.

判断用户是否签字

react-signature-canvas 提供了一个方法来判断画布是否已经被签字。使用isEmpty()方法,将返回一个布尔值来指示画布是否为空(没有签字)。

在你的代码中,你可以添加一个条件语句以根据签名的状态显示或隐藏一些内容。下面是一个示例代码:

import React, { useRef } from "react";
import SignatureCanvas from 'react-signature-canvas';

function App() {
  const sigCanvas = useRef({});

  const clearCanvas = () => {
    sigCanvas.current.clear();
  };

  const getCanvasImage = () => {
    const base64Img = sigCanvas.current.getTrimmedCanvas().toDataURL("image/png");
    console.log(base64Img);
  };

  return (
    <div>
      <SignatureCanvas
        penColor='black'
        canvasProps={{width: 500, height: 200, className: 'sigCanvas'}}
        ref={sigCanvas}
      />
      {sigCanvas.current.isEmpty() ? (
        <div>Please sign</div>
      ) : (
        <>
          <button onClick={clearCanvas}>Clear</button>
          <button onClick={getCanvasImage}>Save</button>
        </>
      )}
    </div>
  )
}

export default App;

在这个例子中,我们使用 isEmpty() 方法来判断画布是否已经签字。如果是,我们将显示一个提示信息 “Please sign”。如果不是,我们将显示清空和保存按钮。请注意,我们在条件语句中使用了 React 的 Fragment (<> 和 </>),以便向页面上呈现多个元素。

需要注意的是,在 componentDidMount() 阶段,ref 可能不会被立即赋值,因此需要在代码中进行条件检查。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/683194.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MOOC 作业】第4章 网络层

不是标答也不是参考答案 仅从个人理解出发去做题 1、(20分) 考虑如图示的网络。 a. 假定网络是一个数据报网络。显示路由器 A 中的转发表&#xff0c;其中所有指向主机 H3 的流量通过接口 3 转发。 目的网络链路接口H33 b. 假定网络是一个数据报网络。你能写出路由器 A 中的…

K8S系列文章之 部署MySQL数据库

1 编写 mysql.yaml文件 apiVersion: v1 kind: Namespace metadata:name: devops # Namespace 的名称 --- apiVersion: apps/v1 kind: Deployment metadata:name: devops-mysql # deployment控制器名称namespace: devops spec:replicas: 1revisionHistoryLimit: 5strategy:…

Maven及IDEA配置

1.Maven的安装及环境变量配置 1. 下载压缩包&#xff0c;解压到指定位置&#xff1b; 2. 在系统环境变量中配置 maven 的 bin 路径&#xff1b; 3. 配置一下 maven 的本地仓库位置和阿里云镜像&#xff08;推荐大家下载 notepad 进行修改配置&#xff09;&#xff1b; 在 …

Mysql高阶语句与MySQL存储过程

Mysql高阶语句 准备环境&#xff08;1&#xff09; 一、MySQL高阶进阶SQL语句1、select2、distinct3、where4、and or5、in6、between7、通配符8、order by9、函数数学函数字符串函数 10、group by11、having12、别名13、子查询13、EXISTS 二、MySQL高阶进阶SQL语句2环境准备&a…

DINDIEN

DIEN模型 DIN存在的问题&#xff1a; DIN引入了attention机制来通过用户历史行为数据对用户兴趣进行建模&#xff0c;而缺乏对具体行为背后的序列信息或者说依赖关系进行专门的建模&#xff0c;也就是没法捕捉到用户的兴趣变化过程。 DIEN的改动&#xff1a; 这个模型既然是…

为什么黑客不黑/攻击赌博网站?

攻击了&#xff0c;只是你不知道而已&#xff01; 同样&#xff0c;对方也不会通知你&#xff0c;告诉你他黑了赌博网站。 攻击赌博网站的不一定是正义的黑客&#xff0c;也可能是因赌博输钱而误入歧途的法外狂徒。之前看过一个警方破获的真实案件&#xff1a;28岁小伙因赌博…

Vue3 组合式 API

前言 传统的组件随着业务复杂度越来越高&#xff0c;代码量会不断的加大&#xff0c;整个代码逻辑都不易阅读和理解。Vue3 使用组合式 API 的地方为 setup。在 setup 中&#xff0c;我们可以按逻辑关注点对部分代码进行分组&#xff0c;然后提取逻辑片段并与其他组件共享代码。…

【FFmpeg实战】编解码 AVCodec

转载自&#xff1a;https://www.cnblogs.com/wangyaoguo/p/8192273.html FFmpeg编解码 FFmpeg支持绝大多数视频编解码格式&#xff0c;如何遍历FFmpeg编解码器&#xff1f; 编解码器以链表形式存储&#xff0c;使用av_codec_next() 函数可以获取编解码器指针&#xff0c;当参数…

【YOLO】yolov5训练自己的数据集

文章目录 0 前期教程1 前言2 准备数据集2.1 数据集来源2.2 数据集结构介绍2.3 标签格式的转换 3 训练以及训练结果3.1 训练3.2 测试 4 数据标注5 后续教程 0 前期教程 【Python】朴实无华的yolov5环境配置 1 前言 上面前期教程中&#xff0c;大致介绍了yolov5开发环境的配置方…

Windows 10 安装 Redis

安装 Redis 1&#xff1a;下载 下载 Windows 版本的 Redis&#xff0c;点击这里 下载redis 2&#xff1a;解压 解压下载的 zip 包到任意目录&#xff0c;如我的目录&#xff1a; 3&#xff1a;启动 命令行进入刚才解压文件的根目录下&#xff0c;然后执行如下命令即可&a…

跌倒检测 关节点角度数学计算

参考&#xff1a; https://github.com/GitGudwl/MediapipePoseEstimationForFallDetection/tree/main https://blog.csdn.net/weixin_45824067/article/details/130646962 1、mediapipe 根据关节点角度计算 1、11与12取中间点&#xff0c;记为center_up; 23 与24取中间点记为c…

为什么自学Python会从入门到放弃?

前言 Python现在非常火&#xff0c;语法简单而且功能强大&#xff0c;很多同学都想学Python&#xff01;所以蛋糕给各位看官们准备了高价值Python学习视频教程及相关电子版书籍&#xff0c;欢迎前来领取&#xff01; 下面小编与大家分享一下自学Python的人&#xff0c;放弃的…

【unity造轮子】Unity ShaderGraph使用教程与各种特效案例(持续更新)

文章目录 一、前言二、ShaderGraph1.什么是ShaderGraph2.在使用ShaderGraph时需要注意以下几点&#xff1a;3.优势4.项目 三、实例效果外发光进阶&#xff1a;带方向的菲涅尔边缘光效果裁剪进阶 带边缘色的裁剪溶解进阶 带边缘色溶解卡通阴影水波纹积雪效果不锈钢效果UV抖动水波…

使用编码工具

本文主要介绍了对句子编码的过程&#xff0c;以及如何使用PyTorch中自带的编码工具&#xff0c;包括基本编码encode()、增强编码encode_plus()和批量编码batch_encode_plus()。 一.对一个句子编码例子 假设想在要对句子’the quick brown fox jumps over a lazy dog’进行编码…

【K8S系列】深入解析K8S存储

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记一级论点蓝色&#xff1a;用来标记二级论点 Kubernetes (k8s) 是一…

ppp协议,一文带你了解

一、PPP协议简介 PPP&#xff08;Point-to-Point Protocol&#xff09;是一种数据链路层协议&#xff0c;用于在两个节点之间建立点对点的数据通信连接。PPP协议是TCP/IP协议族中的一员&#xff0c;它可以在串行通信线路上传输IP数据包&#xff0c;支持多种网络层协议&#xff…

C++ Primer 第11章关联容器

11.1 使用关联容器 map类型通常被常被称为关联数组。关联数组与正常数组类似&#xff0c;不同之处在于其下标不必是整数set就是关键字的简单集合&#xff0c;当想知道一个值是否存在时&#xff0c;set是最有用的 使用map #include<iostream> #include<string> #…

智慧水务物联网数据采集平台和营收管理平台建设

平台概述 智慧水务物联网数据采集平台是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为支撑&#xff0c;以城市水资源、水生…

MySQL - 第10节 - MySQL索引特性

1.索引的概念 索引的概念&#xff1a; • 数据库表中存储的数据都是以记录为单位的&#xff0c;如果在查询数据时直接一条条遍历表中的数据记录&#xff0c;那么查询的时间复杂度将会是O(N)。 • 索引的价值在于提高海量数据的检索速度&#xff0c;只要执行了正确的创建索引的操…

B049-cms04-浏览次数 富文本 轮播图 上传

目录 浏览次数页面加载发送请求后台处理请求前台展示 展示日期富文本编辑static下引入富文本资源文件夹模态框文本域替换成如下内容底部引入相关文件调整模态框样式把富文本选项移到模态框前面上传表情或图片等富文本添加操作手动清空富文本编辑器内容修改操作手动回显富文本编…