Функция Javascript Onclick = window.open () будет открывать новую страницу каждый раз, когда я обновляю страницу? - PullRequest
2 голосов
/ 15 марта 2019

Итак, у меня есть элемент DIV, который, при нажатии, я хочу открыть новую вкладку в другом окне. Единственная проблема заключается в том, что всякий раз, когда страница обновляется или нажимается любой другой элемент div, также запускается функция th, которая открывает страницу в другом окне. Я включу свой код ниже, но я не уверен, почему это происходит, поскольку я использую onClick={window.open("https://www.thechinesewriter.com") Как я уже сказал, я хочу, чтобы новая вкладка открывалась только при нажатии div, а не когда какая-либо другая элементы на странице щелкаются или даже когда обновляется сама страница.

import React from "react";
import "./Column1.css";

class Column1 extends React.Component {

    render() {
        return(
            <React.Fragment>
                 <div className="rectImage">
                     <img className="imagePost" src={this.props.image} />   
                 </div>
                 <div onClick={window.open("https://www.thechinesewriter.com")} className="downloadBut1">
                     <h2>
                         Source
                     </h2>
                 </div>
                 <div className="downloadBut2">
                     <h2>
                         Repository
                     </h2>
                 </div>
             </React.Fragment> 
         )
     }     
}

export default Column1;

Ответы [ 2 ]

5 голосов
/ 15 марта 2019

Вы должны вызывать функцию как обратный вызов, подобный этому.

<div onClick={() => window.open("https://www.thechinesewriter.com")} className="downloadBut1">

В противном случае он вызывается каждый раз при визуализации компонента.

2 голосов
/ 15 марта 2019

Вы используете выражение, которое будет выполняться каждый раз при визуализации компонента.

<div onClick={window.open("https://www.thechinesewriter.com")} className="downloadBut1">

Вы, вероятно, хотите использовать функцию

<div onClick={() => window.open("https://www.thechinesewriter.com")} className="downloadBut1">
...