javascript - 如何在 React JS 中复制到剪贴板

标签 javascript reactjs

<分区>

菜鸟警报

我试图复制显示的 <this.state.response><h1>里面. <p>标签应该充当复制按钮,我想为其提供复制操作。我尝试使用 react-copy-to-clipboard包但失败了,因为我已经在我的代码中定义了一些状态。

<div>
    //content to be copied
            <h1 id="copy" className="password-display"> {this.state.response}</h1>
     //acts as the copy button
            <p className="copy-clipboard">Copy to clipboard</p>
</div>

Home.js

import React, { Component } from "react";
import { Container, Row, Col, ButtonGroup, Button } from "reactstrap";
import {CopyToClipboard} from 'react-copy-to-clipboard';
import Header from "./Header.js";
import Footer from "./Footer.js";

import "./Home.css";


export default class Home extends Component {
  state = {

    response: ''
  };


  componentDidMount() {
    this.callApi()
      .then(res => this.setState({ response: res.chunk }))
      .catch(err => console.log(err));
  }



  callApi = async () => {
    const response = await fetch('/password-api');
    const body = await response.json();

    if (response.status !== 200) throw Error(body.message);

    return body;
  };

  handleClick = async () => {
    await this.callApi()
       .then(res => this.setState({ response: res.chunk }))
 };

  
  render() {
    return (
      <div className="App-header">
        <Header />

        <Container>
          <Row>
            <Col sm="12" md={{ size: 8, offset: 2 }}>
          <div>
                <h1 id="copy" className="password-display"> {this.state.response}</h1>
                <p className="copy-clipboard">Copy to clipboard</p>
              </div>
            
       
               
              {/* <ButtonGroup>
            <Button>Secure</Button>
            <Button>Complex</Button>
              </ButtonGroup> */}
            </Col>
          </Row>
          <Row>
            <Col sm="12" md={{ size: 8, offset: 2 }}>
              <button onClick={this.handleClick} id="get-pass-button" className="button">
                Generate Password
              </button>
            </Col>
          </Row>
        </Container>
        <Footer />
      </div>
    );
  }
}

我相信这个问题与 npm react-copy-to-clipboard 有关!

最佳答案

根据 react-copy-to-clipboard 的文档您只需包装充当要复制的按钮的元素。所以在你的 render() 函数中:

<div>
    <h1 id="copy" className="password-display"> {this.state.response}</h1>
    <CopyToClipboard text={this.state.response}>
        <p className="copy-clipboard">Copy to clipboard</p>
    </CopyToClipboard>
</div>

关于javascript - 如何在 React JS 中复制到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51722888/

相关文章:

javascript - Angular 4. 意外的 token 导出

javascript - 访问 Formik FieldArray 中的嵌套数组

reactjs - 将组件注入(inject)另一个组件

javascript - 我正在尝试将路由器添加到我的 react 应用程序中

javascript - 脚本运行多次

javascript - Select 在 TypeScript 中没有选项属性

javascript - 更新嵌套数组 - React Native

node.js - Sails + 在单个 heroku 服务器上使用react?

reactjs - 好像有一个RN网络检查工具。在哪里?

javascript - 无 Javascript 检测脚本 + 重定向