admin管理员组

文章数量:1394526

This is my code. Am new for Reactjs, am trying to create form and display user info. I want to display the user details below the form after clicked the submit form

import React, {Component} from 'react';

class Input extends Component {
    state = {
        firstName: ''
    }

    displayNameHandler = (e) => {
        let updatedName = e.target.value;
        this.setState({firstName: updatedName});
        //console.log(updatedName);  
    }

    render() {
        return( 
            <div>
                <form>
                    <label>Enter the Name</label>
                    <input type="text" name="firstName" onChange={this.displayNameHandler}/>
                    <button type="button" onSubmit={e => this.displayNameHandler(e)}>Submit</button>
                    <p>"FirstName: " {this.state.firstName}</p>
              </form>
            </div>
        );
    }
}
export default Input;

This is my code. Am new for Reactjs, am trying to create form and display user info. I want to display the user details below the form after clicked the submit form

import React, {Component} from 'react';

class Input extends Component {
    state = {
        firstName: ''
    }

    displayNameHandler = (e) => {
        let updatedName = e.target.value;
        this.setState({firstName: updatedName});
        //console.log(updatedName);  
    }

    render() {
        return( 
            <div>
                <form>
                    <label>Enter the Name</label>
                    <input type="text" name="firstName" onChange={this.displayNameHandler}/>
                    <button type="button" onSubmit={e => this.displayNameHandler(e)}>Submit</button>
                    <p>"FirstName: " {this.state.firstName}</p>
              </form>
            </div>
        );
    }
}
export default Input;
Share Improve this question edited Sep 2, 2018 at 7:36 Luca Kiebel 10.1k7 gold badges32 silver badges46 bronze badges asked Sep 2, 2018 at 6:55 RajRaj 532 gold badges3 silver badges9 bronze badges 0
Add a ment  | 

4 Answers 4

Reset to default 4

Add onClick on button and change type its to submit. Use conditional rendering to show name on submit:

import React, { Component } from 'react';

class Input extends Component {
  state = {
    firstName: '',
    showName: false

  }

  displayNameHandler = (e) => {
    let updatedName = e.target.value;
    this.setState({ firstName: updatedName });
    //console.log(updatedName);  
  }

  handleSubmit = (e) => {
    e.preventDefault();
    this.setState({
      showName: true
    });
  }

  render() {
    return (
      <div>
        <form onSubmit={this.handleSubmit}>
          <label>Enter the Name</label>
          <input type="text" name="firstName" onChange={this.displayNameHandler} value={this.state.firstName} />
          <button type="submit" onClick={this.handleSubmit}>Submit</button>
          {this.state.showName && <p>"FirstName: " {this.state.firstName}</p>}
        </form>
      </div>
    );
  }
}
export default Input;

if you want to use the button you should make another state to keep the submitted data and a state to keep changes in input field

import React, { Component } from "react";

class Input extends Component {
  constructor(props) {
    super(props);

    this.state = {
      firstName: "",
      submitedFirstName: ""
    };
  }

  inputChange = e => {
    const firstName = e.target.value;
    this.setState(() => ({ firstName }));
  };
  displayNameHandler = () => {
    this.setState(prevState => ({ submitedFirstName: prevState.firstName }));
  };

  render() {
    return (
      <div>
        <form>
          <label>Enter the Name</label>
          <input type="text" name="firstName" onChange={this.inputChange} />
          <button type="button" onClick={this.displayNameHandler}>
            Submit
          </button>
          <p>
            "FirstName: "
            {this.state.submitedFirstName && this.state.submitedFirstName}
          </p>
        </form>
      </div>
    );
  }
}
export default Input;

if you want to have on submit simply remove onClick from button cause it has a default type of submit and put an onSubmit in form ponent and also you sould prevent forms default behavior.

displayNameHandler = e => {
  e.preventDefault();
  this.setState(prevState => ({ submitedFirstName: prevState.firstName }));
};

and

<form onSubmit={this.displayNameHandler}>
  <label>Enter the Name</label>
  <input type="text" name="firstName" onChange={this.inputChange} />
  <button>Submit</button>
  <p>
    "FirstName: " {this.state.submitedFirstName && this.state.submitedFirstName}
  </p>
</form>

but you can also show data in input change

import React, { Component } from "react";

class Input extends Component {
  constructor(props) {
    super(props);

    this.state = {
      firstName: ""
    };
  }

  inputChange = e => {
    const firstName = e.target.value;
    this.setState(() => ({ firstName }));
  };

  render() {
    return (
      <div>
        <form>
          <label>Enter the Name</label>
          <input type="text" name="firstName" onChange={this.inputChange} />
          <p>
            "FirstName: "
            {this.state.FirstName && this.state.FirstName}
          </p>
        </form>
      </div>
    );
  }
}
export default Input;

also pay attention to the constructor.

Bellow form you should put something like this

{this.state.firstName !=="" && <p>{this.state.firstName}</p>}
import React, { Component } from 'react';

class Input extends Component {
  state = {
    firstName: '',
    

  }

  displayNameHandler = (e) => {
    let updatedName = e.target.value;
    this.setState({ firstName: updatedName });
    //console.log(updatedName);  
  }

  handleSubmit = () => {
    alert("The Name you Entered is" , this.state.firstName);
  }

  render() {
    return (
      <div>
        <form onSubmit={this.handleSubmit}>
          <label>Enter the Name</label>
          <input type="text" name="firstName" onChange={this.displayNameHandler} value={this.state.firstName} />
          <button type="submit" onClick={this.handleSubmit}>Submit</button>
          
        </form>
      </div>
    );
  }
}
export default Input;

本文标签: javascripthow to display user info after clicked submit in react jsStack Overflow