Can you outline a method to create a phone number input component in React that formats and validates inputs instantaneously?
Crack Every Online Interview
Get Real-Time AI Support, Zero Detection
This site is powered by
OfferInAI.com Featured Answer
Question Analysis
The question asks you to outline a method for creating a phone number input component in React that formats and validates inputs in real-time. This involves two main tasks:
- Formatting: Automatically formatting the user's input to follow a specific phone number format (e.g.,
(123) 456-7890
). - Validation: Ensuring that the input is a valid phone number as the user types.
You'll need to manage the component's state to handle input changes and use regular expressions or a library to assist with formatting and validation.
Answer
To create a phone number input component in React that formats and validates inputs instantaneously, follow these steps:
-
Set Up State and Handlers:
- Use React's
useState
hook to manage the input value.
const [phoneNumber, setPhoneNumber] = React.useState("");
- Use React's
-
Formatting Function:
- Create a function to format the phone number input. You can use a regular expression to insert parentheses and dashes as needed.
const formatPhoneNumber = (value) => { if (!value) return value; const phoneNumber = value.replace(/[^\d]/g, ''); const phoneNumberLength = phoneNumber.length; if (phoneNumberLength < 4) return phoneNumber; if (phoneNumberLength < 7) { return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3)}`; } return `(${phoneNumber.slice(0, 3)}) ${phoneNumber.slice(3, 6)}-${phoneNumber.slice(6, 10)}`; };
-
Validation Function:
- Implement a function to validate the phone number. This can simply check the length or use a more comprehensive regex pattern.
const isValidPhoneNumber = (value) => { const phoneNumber = value.replace(/[^\d]/g, ''); return phoneNumber.length === 10; };
-
Input Change Handler:
- Create an
onChange
handler for the input field to format and validate as the user types.
const handleInputChange = (event) => { const inputValue = event.target.value; const formattedPhoneNumber = formatPhoneNumber(inputValue); setPhoneNumber(formattedPhoneNumber); };
- Create an
-
Render the Component:
- Use an input field for phone number entry and provide feedback for validation.
const PhoneNumberInput = () => ( <div> <input type="text" value={phoneNumber} onChange={handleInputChange} placeholder="Enter phone number" /> {!isValidPhoneNumber(phoneNumber) && phoneNumber.length > 0 && ( <p style={{ color: 'red' }}>Invalid phone number</p> )} </div> );
-
Usage:
- Integrate this component into your React application.
function App() { return ( <div> <h1>Phone Number Input</h1> <PhoneNumberInput /> </div> ); } export default App;
This method ensures that the user input is both formatted and validated as they type, providing instant feedback and maintaining a clean and professional user interface.