Open In App

React Suite Steps Dynamic

Improve
Improve
Like Article
Like
Save
Share
Report

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' }}>
                GeeksforGeeks
            </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' }}>
                GeeksforGeeks
            </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>GeeksforGeeks</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



Last Updated : 18 Jun, 2022
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads