React Suite is a popular front-end library with a set of React components that are designed for the middle platform and back-end products. Steps is a navigation bar that guides users through the steps of a task.
Steps Dynamic will help to create dynamic steps which means we will have a button that will trigger different components displayed on the screen based upon step number.
Creating React Application And Installing Module:
Step 1: Create a React application using the following command:
npx create-react-app foldername
Step 2: After creating your project folder i.e. foldername, move to it using the following command:
cd foldername
Step 3: After creating the ReactJS application, Install the required module using the following command:
npm install rsuite
Project Structure: It will look like the following:
Example 1: Write the following code in the App.js file. Here, App is our default component where we have written our code. In this example, we will learn about Steps Dynamic. Step value will be changed using a button.
Javascript
import React, { useState } from 'react' ; import 'rsuite/dist/rsuite.min.css' ; import Steps from 'rsuite/Steps' ; import { Button, IconButton, ButtonGroup, ButtonToolbar } from 'rsuite' ; import { Panel, PanelGroup } from 'rsuite' ; import { Placeholder } from 'rsuite' ; export default function App() { const { Paragraph } = Placeholder; const [step, setStep] = React.useState(0); const onChange = nextStep => { setStep(nextStep < 0 ? 0 : nextStep > 3 ? 3 : nextStep); }; const onNext = () => onChange(step + 1); const onPrevious = () => onChange(step - 1); return ( <div> <h1 style={{ color: 'green' }}> neveropen </h1> <h3>React Suite Steps Dynamic </h3> <Steps current={step}> <Steps.Item title= "Finished" description= "Description" /> <Steps.Item title= "In Progress" description= "Description" /> <Steps.Item title= "Waiting" description= "Description" /> <Steps.Item title= "Waiting" description= "Description" /> </Steps> <Panel header={`Step: ${step + 1}`}> <Paragraph /> </Panel> <hr /> <ButtonGroup> <Button onClick={onPrevious} disabled={step === 0}> Previous </Button> <Button onClick={onNext} disabled={step === 3}> Next </Button> </ButtonGroup> </div> ) } |
Step to Run Application: Run the application using the following command from the root directory of the project:
npm start
Output: Now open your browser and go to http://localhost:3000/, you will see the following output:
Example 2: In this example, we will learn how we can dynamically manipulate the content of dynamic steps. We will pass the value of step as prop to the function that will return different components .
Javascript
import React, { useState } from 'react' ; import 'rsuite/dist/rsuite.min.css' ; import Steps from 'rsuite/Steps' ; import { Button, IconButton, ButtonGroup, ButtonToolbar } from 'rsuite' ; import { Panel, PanelGroup } from 'rsuite' ; import { Placeholder } from 'rsuite' ; export default function App() { const [step, setStep] = React.useState(0) const onChange = nextStep => { setStep(nextStep < 0 ? 0 : nextStep > 3 ? 3 : nextStep); }; const onNext = () => onChange(step + 1); const onPrevious = () => onChange(step - 1); return ( <div> <h1 style={{ color: 'green' }}> neveropen </h1> <h3>React Suite Steps Dynamic </h3> <Steps current={step}> <Steps.Item title= "Finished" description= "Description" /> <Steps.Item title= "In Progress" description= "Description" /> <Steps.Item title= "Waiting" description= "Description" /> <Steps.Item title= "Waiting" description= "Description" /> </Steps> <Panel header={`Step: ${step + 1}`}> <Paragraph value={step} /> </Panel> <hr /> <ButtonGroup> <Button onClick={onPrevious} disabled={step === 0}> Previous </Button> <Button onClick={onNext} disabled={step === 3}> Next </Button> </ButtonGroup> </div> ) } function Paragraph(props) { if (props.value == '1' ) { return (<div style={{ color: 'red' }}> <h1>neveropen</h1> </div>) } else { if (props.value == '2' ) { return (<div style={{ color: 'blue' }}> <h1>Hello Geeks!!!</h1> </div>) } else { return (<div style={{ color: 'orange' }}> <h1>Welcome to Steps Dynamic</h1> </div>) } } } |
Output:
Reference: https://rsuitejs.com/components/steps/#dynamic