A React "if component"
- Published at
- Updated at
- Reading time
- 1min
After using Vue and Angular.js (I used the first version of Angular when it came out) for many years, I have to say that I always enjoyed the simplicity of using v-if and ng-if to render child components conditionally.
Now I'm writing React primarily and I'm bothered by the constant use of ternary operators when dealing with conditionally rendered components.
function SomeComponent({condition}) {
  return <div>
    { condition ? <span>Yes it is true!</span> : null }
  </div>
}
It's not a big deal, and there are many different ways to render boolean-dependent components (such as using &&), but I never really liked writing code like this and I don't think it's very readable.
Today I read 7 Ways of Achieving Conditional Rendering in React, and it included a handy snippet that I'll adopt from now on.
I can't say that I didn't consider abstracting the ternary operators away, but somehow I never took it into practice. Fernando Doglio's article now moved me over the line to adopt a nicer pattern. Say hi to the functional if component.
function IF({children, condition}) {
  if (condition) {
    // render children if the condition is truthy
    return children;
  }
  return null;
}
/**
 * Use the component as follows:
 *
 * <IF condition={condition}>
 *   <Greeter username={user.name} />
 * </IF>
 */
It's seven lines of code and this tiny component can be brought into any React project as a handy utility. Much better! Thank you Fernando!
Join 6.1k readers and learn something new every week with Web Weekly.
