zoukankan      html  css  js  c++  java
  • 剪贴板功能的实现

    利用的插件包  clipboard-polyfill

     1 import React, { Component } from 'react'
     2 
     3 import clipboard from "clipboard-polyfill"
     4 import {Button} from "antd"
     5 
     6 export default class Main extends Component {
     7     constructor(props){
     8         super(props);
     9         this.state={
    10             opj:{
    11                 "param.code.name":"姓名",
    12                 "param.codexname":"昵称",
    13                 "param.code.age":"年龄",
    14                 "param.code.gender":"性别",
    15                 "param.code.hobby":"爱好",
    16             },
    17             val:"大家好这是新来的同学,叫 ,也可以叫,今年了,喜欢,也喜欢",
    18             changeVal:""
    19         }
    20     }
    21     render() {
    22         //console.log(Object.entries(this.state))
    23         return (
    24             <div>
    25                 <div className="top">
    26                     {Object.entries(this.state.opj).map((item,index)=>{
    27                         return <Button  className="btn" key={index} onClick={this.copy.bind(this,index,item)}>{item[1]}</Button>
    28                     })}
    29                 </div>
    30                 <textarea name="" id="text" ref="text" onPaste={this.paste.bind(this)} cols="30" rows="10" value={this.state.val} onChange={(e)=>{
    31                     this.setState({
    32                         val:e.target.value
    33                     })
    34                 }} />
    35                 <button onClick={this.del.bind(this)}>去除value</button>
    36                 <button onClick={this.add.bind(this)}>补充value</button>
    37             </div>
    38         )
    39     }
    40     copy(index,item){
    41         //document.execCommand("Copy"); // 执行浏览器复制命令
    42         // let btn=document.querySelectorAll(".btn")[index]
    43         // btn.value=`[${item[1]}(${item[0]})]`
    44         // btn.select()
    45         // console.log(document.execCommand("Copy"))
    46         // btn.value=item[1]
    47         
    48         let text=`[${item[1]}(${item[0]})]`;
    49         //将文字复制到剪贴板
    50         clipboard.writeText(text)
    51         //console.log(text);
    52     }
    53     del(){
    54         let str=this.state.val;
    55         str=str.replace("]","")
    56         let res=/[.*?(/g;
    57         str=str.replace(res,"(")
    58         //console.log(str);
    59         this.setState({
    60             val:str
    61         })
    62     }
    63     add(){
    64         let str=this.state.val;
    65             if(str.indexOf("]")<0){
    66                 console.log(111)
    67                 str=str.replace(/((.+?))/g,  ($0,$1,$2)=> {
    68                     console.log($0,$1,$2,"============");
    69                     return `[${this.state.opj[$1]}${$0}]`
    70                   });
    71                   console.log(str)
    72                   this.setState({
    73                     val:str
    74                   })
    75             }
    76        
    77     }
    78     //粘贴触发的时间
    79     paste(){
    80         //--------
    81         this.setState({
    82             changeVal:this.state.val
    83         })
    84         
    85     }
    86 }
  • 相关阅读:
    C#编写msn的源代码
    主板不支持大硬盘和新款CPU的解决办法
    Blog、IM、MSN机器人
    一些好工具
    Full Version: [插件]QQLite Andysun 修改版 2.0 Build 370
    opencv for android 编译
    IOS autorelease 错误
    lua 脚本工具V1.3
    编译OpenCV for windows
    clang 3.1 stddef.h:61 error
  • 原文地址:https://www.cnblogs.com/cq1715584439/p/11245449.html
Copyright © 2011-2022 走看看