Search code examples
javascriptreactjsweb-componentdisabled-input

ReactJS - Disabling a component


I need to disable PostList component in its initial state.

import React from 'react';
import PostList from './PostList';

const App = () => {
    return (
        <div className="ui container">
             <PostList />
        </div>
    );
};

export default App;

Whats the best way to disable (and grey out) a component? Possible solutions are to pass a value as props and then apply it to a ui element, However please keep in mind that PostList may have inner nested components as well. Please share an example.


Solution

  • Since you mentioned in a comment that instead of hiding it, you want to grey it instead. I would use the disabled state and style the component. Since PostList could be nested, we don't know what the props are since you did not specify them.

    Also, I assuming that you are not using styled-components.

    import React, { useState } from "react";
    import PostList from "./PostList";
    
    const App = () => {
      const [disabled, setDisabled] = useState(true);
    
      return (
        <div className="ui container">
          <PostList
            style={{
              opacity: disabled ? 0.25 : 1,
              pointerEvents: disabled ? "none" : "initial"
            }}
          />
        </div>
      );
    };
    
    export default App;