Как запустить код на сервере нажатием кнопки? - PullRequest
1 голос
/ 27 апреля 2020

У меня есть простое приложение Next. js с пустышкой. js файл выглядит следующим образом:

class Dummy extends React.Component{

    static async getInitialProps(ctx){
        return { dummy : 'abc'};
    }

    displayHelloWorld(params) {
      console.log(params.dummy);
    }

    render() {
        return <button onClick={this.displayHelloWorld(this.props)}>Click Me!</button>
    }
}

export default Dummy;

Я запускаю приложение с помощью команд npm run dev и go до localhost:3000/dummy. Я ожидал, что функция displayHelloWorld запустится только тогда, когда я нажму кнопку Click Me! , но она вызывается при самой загрузке страницы.

Моя цель - вызвать и запустить функцию на сервере. сторона (по нажатию кнопки). Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Запись <button onClick={this.foo(args)}>...</button> фактически вызывает функцию один раз при рендеринге компонента.

Простым решением будет передача функции обратного вызова, например onClick={()=>this.foo(args)}.

Это гарантирует, что функция будет вызываться каждый раз при нажатии кнопки.

1 голос
/ 27 апреля 2020

Это потому, что вы вызываете метод this.displayHelloWorld() непосредственно в функции рендеринга. Вы можете обернуть его внутри функции стрелки:

return <button onClick={() => this.displayHelloWorld(this.props)}>Click Me!</button>
...