What is Controlled Component?
In React.js, a controlled component are those whose Component state is controlled and managed by React state. This means that the form input’s value is consistently controlled by the state managed by React .This mechanism ensures that any changes in the value are automatically reflected in the form element. Controlled components enable React to maintain the source of truth for the form data, allowing for dynamic updates and easy synchronization between the UI and the component’s state.
Characteristics of Controlled Components:
- State Control: The value of the form input (like
<input>
,<textarea>
, or<select>
) is controlled by the state managed by the react. - Event Handling: Changes to the input value are managed by an
onChange
event handler, which updates the state with the new value. - Single Source of Truth: The input value is always controlled by React’s state, ensuring consistency and making it easier to implement features like form validation or dynamic input handling.
Example of a Controlled Component in React:
Here’s an example of how you might implement a controlled input component using functional components and the use State
hook:
import React, { useState } from 'react';
const ControlledInput = () => {
const [inputValue, setInputValue] = useState('');
const handleChange = (e) => {
setInputValue(e.target.value);
};
return (
<div>
<label>
Enter your name:
<input
type="text"
value={inputValue} // Controlled input: value is set by state
onChange={handleChange} // onChange updates the state
/>
</label>
<p>Your name is: {inputValue}</p>
</div>
);
};
export default ControlledInput;
JSXExplanation:
- useState Hook:
inputValue
is a state variable initialized to an empty string (''
). - handleChange Function: This function is called whenever the input field’s value changes (
onChange
event). It updates theinputValue
state with the new value entered by the user (e.target.value
). - Input Element: The
<input>
element has itsvalue
attribute set toinputValue
, making it a controlled component. This means its value is determined by the React state (inputValue
) and changes wheneverinputValue
changes. - Displaying Input Value: The current value of
inputValue
is displayed below the input field (<p>Your name is: {inputValue}</p>
), demonstrating how changes in state immediately reflect in the UI.
When to Use Controlled Components:
- Use controlled components when you need to manage and synchronize form data with React’s state.
- Controlled components are particularly useful when implementing features like form validation, dynamic form fields, or when the input value depends on other state values.
Benefits of Controlled Components:
- Predictability: Since the component’s state determines the input’s value, you always know what the current value of the input is.
- Validation: Easy to implement validation logic because you have direct access to the input value through state.
- Dynamic Updates: Changes to the input value are immediately reflected in the UI, enabling a seamless user experience.
Conclusion
Controlled components are a foundational concept in React that revolutionize how developers manage and interact with form inputs. By maintaining the value of form elements within the component’s state and handling changes through controlled events, React ensures a predictable and efficient flow of data within applications.
Frequently Asked Questions
A controlled component in React are those whose component state is controlled and managed through React state. Instead of letting the DOM manage the component state, React manages it through state and updates it via controlled events like on Change
.
Controlled Components: The input value is controlled by React state. Changes to the input value trigger state updates through onChange
events. They offer more control and enable easier synchronization between UI and state.
Uncontrolled Components: The input value is managed by the DOM. You can access its current value using refs but React doesn’t actively control or track changes, which can sometimes lead to more complex handling for form data.
Single Source of Truth: React state serves as the source of truth for input values, making data flow predictable and easier to manage.
Dynamic Updates: React efficiently manages changes to input values, allowing for dynamic updates in the UI based on user interactions.
Form Validation: Easier to implement form validation and handle form submission logic by having direct access to input values in React state.