ReactJS: использование alert() для получения входных данных от пользователя

#javascript #reactjs

#javascript #reactjs

Вопрос:

Как я могу использовать alert() , чтобы разрешить пользователю вводить свое имя и сохранять его в state?

Вот что я пытался до сих пор:

 render: function() {
    return (
      <div>
        <input type="text" onChange={ this.handleChange } />
        <Button>Save</Button>
      </div>
    );
  }
}
  

Ответ №1:

Одним из вариантов было бы использовать prompt() функцию, которая отображает модальное диалоговое окно, через которое пользователь может вводить и получать входные данные. prompt() Метод также позволяет вам предоставить пользовательское приветствие, которое может быть передано в качестве первого аргумента следующим образом:

     const enteredName = prompt('Please enter your name')
  

Интеграция этого с вашим существующим компонентом react может быть выполнена несколькими способами — один из подходов может быть следующим:

 /* Definition of handleClick in component */
handleClick = (event) => {

    /* call prompt() with custom message to get user input from alert-like dialog */
    const enteredName = prompt('Please enter your name')

    /* update state of this component with data provided by user. store data
       in 'enteredName' state field. calling setState triggers a render of
       this component meaning the enteredName value will be visible via the
       updated render() function below */
    this.setState({ enteredName : enteredName })
}

render: function() {
    return (
      <div>

        {/* For demonstration purposes, this is how you can render data 
            previously entered by the user */ }
        <p>Previously entered user name: { this.state.enteredName }</p>

        <input type="text" onChange={ this.handleChange } />
        <input
          type="button"
          value="Alert the text input"
          onClick={this.handleClick}
        />
      </div>
    );
  }
});
  

Ответ №2:

Я думаю, вы имеете в виду prompt():

 var userName = prompt('Please Enter your Name')
  

Переменная userName будет содержать ответ пользователя.