In React, a reusable component is a piece of UI that can be used in various parts of an application to build more than one UI instance. For instance, we can have a button component display with different colors in several parts of our application. Although it is the same button component when we provide it with a dataset (e.g color, or a function), it modifies itself and outputs a UI instance of the element.
This pattern of creating React components is necessary for scaling. It helps save time by ensuring less code is written, development is faster, the codebase is simpler, and maintenance is stress-free.
In this tutorial, we will build reusable React components that can be used throughout your projects to maintain consistency in logic and presentation. We’ll use Hooks for managing and manipulating state data.
Input component
One advantage of creating a reusable input component is that you maintain the appearance of the input in various parts of your application. You can also determine what type of input component should be rendered (text, email, etc) by passing it a prop. Although we won’t go deep into styling in this tutorial, you can customize your components to suit your visual needs.
In your newly created sandbox project, create a components folder with a FormInput.js file and add the following code to it:
For a component to be reusable, it has to take in data or data sets (via props) and return an output (usually through a function passed via props). It is recommended that mutable state should be kept in the state property of a component to ensure they work correctly.
The FormInput() component above receives an input type to determine what type of input element to render (email, text, etc). It also takes in a method onChange() to receive the value sent back out from the input.
The component manages its value locally, and only returns the updated state value to the component it is called from.
To achieve this, we created a local function handleChange(). The function checks if a method to receive the state data is available via props then sends the current state data to it for further processing.
Custom select component
In your components folder, create a CustomSelect.js file and add the following code to it:
Above, we receive the data set needed for the options tag in the select element via props. To build the option tags, we looped through the data set via props to construct it before rendering it as part of the select tag.
The state of the tag (the currently selected option) is stored locally and updated and sent back as an output when it changes via our local function handleChange().
Button component
A reusable button can be used to display different color variants or sizes everywhere it is used in your application. In your components folder, create a Button.js file and add the following code to it:
Our button receives three properties via properties via props. The variant (used to determine the button color), the size 9lg, xs, sm) to determine the size of the buttons. We display the button content dynamically using React's built-in children property (props.children).
Modal component
A modal component is suitable for sending alerts in your application. In your components folder, create a Modal.js file and add the following code to it:
Our modal component does two things:
It receives a boolean value that determines if it pops up or not
It also receives the message to be displayed when it pops up
To close the modal, we’d need to set the show state to false. We can do that by calling a setTimeout() function in the useEffect() hook after a few seconds.
Toggle component
A toggle component is used in situations where a true or false answer is necessary. It is an essential form component.
In your components folder, create a ToggleSwitch.js file and add the following code to it:
Our toggle component receives the following props:
ID (required): this is the ID that’s going to be passed to the checkbox input control. Without this, the component won’t render
Text (required): The Toggle Switch contains an array of two values, which signify the text for True and False
Name (optional): this will be label text of the checkbox input
onChange (optional): this will used to receive the returned data from the components
Checked (optional): this will be directly passed to the element to get its current state
Disabled (optional): this will be be used to set the state of the button
When it changes, we update the state and send the value to the event listener sent via props from the parent component.
Using the components
To use the components we just created, we need to render them from a parent component and pass the relevant data to them. Add the following to your
index.js:
For further queries or demo please comment below or contact us.
For any for consultant/ support work on O365/ development, contact us or visit our website www.sigilotech.com
Comments