How To Improve React Components With Optional Chaining

Let’s minimize errors in our web apps

How To Improve React Components With Optional Chaining

If you’re working on a big React (Next.js) application, sometimes you might need to dive deep into a data structure. It’s pretty generic. The React component I’m talking about would look like this:

If any property of content or blok is missing, we have a big problem. The page will break and the user will get an error. 🥺 (see screenshot)


Improvement: Optional Chaining and Nullish Coalescing Operator

We need two JavaScript features to prevent a massive error: optional chaining and the nullish coalescing operator. Don’t worry, this all sounds more complicated than it actually is.


Optional chaining

Optional chaining looks like this: content?.content?.blok. The browser will first check if there is a content property inside the content object instead of assuming that this property exists. If it doesn't exist, it won't show an error but will make the variable nullish. So it doesn't have a value.


Nullish coalescing operator

Now that our variable can be nullish, this means it can be null or undefined. But we want to show both titles on the page instead of nothing.

The nullish coalescing operator looks like this: ??. It checks if the operator's left value is null or undefined. If it is, you can give it a fallback value.

So it looks like this: content?.content?.blok ?? 'Title'. If the value is nullish, it will assign the 'Title' to the variable. If the value isn't nullish, it will assign the title from the deeply nested object.


Improved React Component

If we implement the solutions we discussed before, our component looks like this:

Now, the user will always have a title and no errors. It’s better to be prepared for mistakes so that the user can continue their journey through the application.

Yes, the user will see a faulty title, but that’s far better than showing an actual error or, even worse, the page not showing!


Conclusion

Hopefully, this will help you improve your React components. Be prepared if the content doesn’t load or exist! And make sure the user has a great user experience.


Thanks!

hashnode-footer.png I hope you learned something new or are inspired to create something new after reading this story! 🤗 If so, consider subscribing via email (scroll to the top of this page) or follow me here on Hashnode.

Did you know that you can create a Developer blog like this one, yourself? It's entirely for free. 👍💰🎉🥳🔥

If I left you with questions or something to say as a response, scroll down and type me a message. Please send me a DM on Twitter @DevByRayRay when you want to keep it private. My DM's are always open 😁

Did you find this article valuable?

Support Dev By RayRay by becoming a sponsor. Any amount is appreciated!