Open In App

React Suite Steps Dynamic

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.




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 .




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


Article Tags :