In a React application, you can achieve the same functionality of disabling a button when an input is empty using React state and event handling.
The first thing we have to do is to create our React application using the command:
npx create-react-app folder-name We’re also going to add a little Bootstrap for ease of design. We will add the following code to our index.html file in the public folder of our application.
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous"> Next, we will modify our App.js file as follows:
import React, { Component } from 'react';
class App extends Component{
render(){
return(
<div className="container">
<form>
<div class="mb-3 col-md-6">
<label for="exampleFormControlInput1" class="form-label">Email address</label>
<input onChange={(e) => this.getValue(e)} type="email" class="form-control mb-4" placeholder="name@example.com" />
<button type="button" class="form-control btn btn-primary btn-lg">Submit</button>
</div>
</form>
</div>
)
}
}
export default App;
We need to set initial state for our application. What we want is that as the application loads initially, let the button be disabled and then we can conditionally check for input.
We will set the state as follows:
constructor(props){
super(props);
this.state = {
isDisabled: false,
email: ''
}
} Next, we need to set that state in our button element.
render(){
const { isDisabled } = this.state;
return(
<div className="container">
<form>
<div class="mb-3 col-md-6">
<label for="exampleFormControlInput1" class="form-label">Email address</label>
<input type="email" class="form-control mb-4" placeholder="name@example.com" />
<button disabled={isDisabled} type="button" class="form-control btn btn-primary btn-lg">Submit</button>
</div>
</form>
</div>
)
} Finally, we’re going to create a function that gets the entered value and updates the state.
getValue = (e) => {
if(e.target.value === ""){
this.setState({ isDisabled: true })
}else {
this.setState({ isDisabled: false })
}
} import React, { Component } from 'react';
class App extends Component{
constructor(props){
super(props);
this.state = {
isDisabled: true,
email: ''
}
}
getValue = (e) => {
if(e.target.value === ""){
this.setState({ isDisabled: true })
}else {
this.setState({ isDisabled: false })
}
}
render(){
const { isDisabled } = this.state;
return(
<div className="container">
<form>
<div class="mb-3 col-md-6">
<label for="exampleFormControlInput1" class="form-label">Email address</label>
<input onChange={(e) => this.getValue(e)} type="email" class="form-control mb-4" placeholder="name@example.com" />
<button disabled={isDisabled} type="button" class="form-control btn btn-primary btn-lg">Submit</button>
</div>
</form>
</div>
)
}
}
export default App;
Latest tech news and coding tips.
Few things halt a developer’s flow faster than seeing the dreaded word: CONFLICT. A Git merge…
Spring Boot is one of the most popular frameworks for building REST APIs in Java.…
Why borrowing code is a skill—when you understand what you're copying. For years, "copy-paste developer"…
Interactive forms rarely keep every field active all the time. Sometimes an input should only…
A modern JavaScript API for working with dates, times, time zones, and calendars without the…
Understanding What Happens Behind the Scenes Node.js looks simple from the outside—you write JavaScript, call…