Understanding higher-order components

  • Why use HOC: Promote reuse of logic across React components.
  • How to use HOC: The core structure of a HOC is a function that takes a component and returns a new component.
  • HOC are pure functions with no side-effects because the component passed in, is wrapped in a new component.
  • The HOC looks like this: – – State now has a property to inject data from the API fetch into the wrapped component via the prop.
  • React Redux connect has a different function signature of a function returning a function which accepts one argument (ie, ‘component’) to create a HOC.

Understand why and how to use higher-order components with React JS

Continue reading “Understanding higher-order components”

React — Composing Higher-Order Components (HOCs) – Casey Morris – Medium

  • Data is passed down to the wrapped component.LoggerEasily log all prop changes (on render) for a given component, helpful for quick debugging purposes.PropsSometimes you need to inject props into a component, this is especially useful when using a branch HOC and only want a single branch to receive specific props.TimeoutsAdding…
  • This HOC will also spread the current data item as props into the supplied component.HOCsNow that we’ve gone over a few use cases, lets look at some simple implementations before we get into any complex chaining.hasPropsTakes a single parameter, injectedProps and returns a wrapped component with the supplied injectedProps .
  • Useful when you need to inject props to a single component within the branch hoc, as the props supplied are injected into both passing and failing components.Use:Use with branch HOC:hasLoggerTakes a single parameter, prefix which prefixes the logged message, defaults to an empty string.
  • Injects data, hasError, error, useDefault, loading, and loadingMessage as props to be used in the wrapped no parameters and returns a wrapped component with injected props addTimeout and clearTimeouts.
  • This page includes a MockPostContainer which extends the Post component with a logger, mock data, loader, error, default, and list.Posts, Todos, Comments, and Users PagesAll of these pages consume real API endpoints from They each extend a single component (Post, Todo, Comment, User) with the isContainer and isList HOCs.Wrapping UpI hope…

To put it simply, a higher-order component is a function, that takes a component and returns a new component. I like to think of them as parameterized components. Many times I find myself creating…
Continue reading “React — Composing Higher-Order Components (HOCs) – Casey Morris – Medium”

Query Components with Apollo – Kureev Alexey – Medium

  • After Apollo takes care of fetching and mapping props to query parameters, query component uses “function-as-a-child” approach to expose a child-independent API with injected data.Comparing to the standard approach were you add a graphql wrapper to your higher-order components, query components have a set of advantages:Testability.
  • Query Components abstracts out your data management layer so you can focus on business logic and change underlying implementation if needed.Once a Query Component is defined, it can be used as an any other component in your application:A nice side effect of decoupling higher-order components into Query Components is minimizing…
  • If the data management layer grows, it won’t affect presenter components unless they have to reflect new data properties.Mutations with Query ComponentsMutations are not that straightforward as queries.
  • For example:Therefore, you can use this component in a similar way:So the concept is the same: Query Component receives a bunch of props that are later on used as parameters for the mutation query.Testing Query Components like a Pro 😎How to test Query Components?When it comes to testing, Apollo-based components have…
  • In other words, we check if given data.x complies to the shape of the mock that was passed to the fake client during initialization.And the last, but not least: query component should call a children function with the data, pulled from Apollo.

A couple of months ago, we started to use Apollo Client (+React Native) at Werkspot. From the very beginning, Apollo overwhelmed us by the simplicity and flexibility it provides. It inspired us to…
Continue reading “Query Components with Apollo – Kureev Alexey – Medium”