簡體   English   中英

如何通過單擊 reactjs 中的按鈕打開 url

[英]How to make open url on click on button in reactjs

In my code I am trying to do when I select row and click on button then this url open http://codeskulptor-assets.commondatastorage.googleapis.com/assets_clock_minute_arrow.png .

但是現在在我的代碼中,當我 select 行並單擊按鈕然后 url 未打開時。

How can we do that to open this url when I select row and click button the open url http://codeskulptor-assets.commondatastorage.googleapis.com/assets_clock_minute_arrow.png .

我的代碼在這里https://codesandbox.io/embed/react-example-forked-o8tu5?codemirror=1

任何人請提出任何想法並幫助我。 我堅持這一點。

   import React from 'react';
import axios from 'axios';
class ProvFileRptSearchResult extends React.Component {
    constructor(props) {
        super();
      
        this.state = {
            pymtDetails:[],
            data: [],
            rowDetails:[],
            checkbox: false
            
           };
        //    this.handleFile=this.handleFile.bind(this);
             this.handleClick=this.handleClick.bind(this);
       
    }

    handleClick() {
        const apiUrl = "http://localhost:9090/PrvFileRpt/getPrvFileData";
        if (this.state.checkbox) {
          fetch(apiUrl)
            .then((response) => response.json())
            .then((data) => {
              this.setState({ data: data });
              console.log("This is your data", data);
              window.open("https://example.com", "_blank");
            })
        } else {
          alert("Data not fetched!");
        }
        // console.log('click');
      }

    // handleClick(e) {
    //     e.preventDefault();
    //     console.log("The link was clicked");
    //   }

    // handleFile()
    // {
    //     //fetch birt report from here
    //     console.log("inside file  ",this.state.rowDetails);
    // }
    rowSelected(j) {
  
       // e.preventDefault();
       
        console.log(j)
       
        const rownum=j;
         console.log("rownum=",rownum)
   
         console.log(this.props.customerDetails[rownum] )
        this.setState({rowDetails:this.props.customerDetails[rownum]}, () => {
        
        
    });
    }
   
    
    render()
    {
        return(
            <div>
                <div className="table-employee" style={{ marginTop:"20px",border:" 1.5px solid darkgray" }}>
            <table className="table table-hover table-bordered table-sm">
            <thead>
            <tr >
            <th scope="col">Select</th>
            <th scope="col"> LOAD DATE</th>
            <th scope="col"> FILE DATE</th>
                <th scope="col"> SERVICE</th>
                <th scope="col"> PROVISIONER CODE </th>
                <th scope="col"> DESCRIPTION</th>
                
               
            </tr>
            </thead>
            <tbody>
                     {
                     this.props.customerDetails.map((type,j)=>{
                        return(
 
                        <tr> 
                        <td ><input type="radio" preventDefault name="select"  key={j}  onClick={(e) =>this.rowSelected(j)} value={this.state.checkbox}
                    onChange={(e) =>
                      this.setState({ checkbox: !this.state.checkbox })
                    }/></td>
                         <td> {type.provis_file_stamp}</td>
                          <td> {type.provis_file_hdrdt}</td>
                          <td> {type.service_code}</td>
                            <td>{type.provisioner_code}</td>
                            <td>{type.provisioner_desc}</td>   
                            
                            </tr>
                        )
                     })
                         
                }

            </tbody>
            </table>
            </div>
            <div className="btn-submit" >
                            <button className="btn btn-primary" style={{marginRight:"30px"}}  type="submit" onClick={this.handleClick}>FILE</button>
                               
                        </div>
            
    </div>
        )
    }
}
    
export default ProvFileRptSearchResult;

使用URL openInNewTab 它將在新的瀏覽器選項卡中打開URL 如果您想在同一個選項卡中打開它,請刪除“_blank”。

const openInNewTab = (url) => {
    const newWindow = window.open(url, '_blank', 'noopener,noreferrer')
    if (newWindow) newWindow.opener = null
}

好吧,如果我理解正確,您是在嘗試單擊按鈕打開 URL 嗎?

如果這是正確的,在單擊處理程序中使用window.open('https://example.com', '_blank')將允許您在新選項卡中打開任何 URL。

首先,您需要使用find方法找到正確的 object,然后您可以使用 window.open 打開window.open

嘗試以下代碼: -

handleClick = () => {
    const apiUrl = "https://mocki.io/v1/b512f8b8-64ab-46e4-9e0c-9db538a0ad9e";
    if (this.state.checkbox) {
      fetch(apiUrl)
        .then((response) => response.json())
        .then((data) => {
          this.setState({ data: data });
          const urlData = data.find(element => element.id === 3); // filter data with id
          window.open(urlData.url, '_blank'); // open url here
        });
    } else {
      alert("check the radio!");
    }
  };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM