Skip to content

Instantly share code, notes, and snippets.

@MaximeHeckel
MaximeHeckel / App.js
Last active May 10, 2018 01:26
React sub-components Take 2 - Second use of a sub-component example with the new context API
import React, { Component } from "react";
import Article, { Title } from "./Article";
class App extends Component {
constructor() {
this.state = {
value: {
title: <h1>React sub-components with</h1>,
subtitle: (
<div>Lets make simpler and more flexible React components</div>
@MaximeHeckel
MaximeHeckel / Article.js
Created March 27, 2018 02:40
React sub-components Take 2 - Full sub-components example with the new context API
import React from "react";
// This creates the "Article Context" i.e. an object containing a Provider and a Consumer component
const ArticleContext = React.createContext();
// This is the Title sub-component, which is a consumer of the Article Context
const Title = () => {
return (
<ArticleContext.Consumer>
{({ title, subtitle }) => (
@MaximeHeckel
MaximeHeckel / Article.js
Last active April 21, 2018 19:00
React sub-components using Flow
// @flow
import * as React from 'react'
// This creates the "Article Context" i.e. an object containing a Provider and a Consumer component
// $FlowFixMe
const ArticleContext = React.createContext();
// We use classes here instead of functional components for our sub-components
// so we can define a type for each one of them
<Article>
<Article.Title />
{/*
This will render if we use the sub-component pattern described in part 2,
but will be skipped with the one described in part 1 (the findByType util
mentioned in the post will simply not render "<div></div>" as it's not
a known sub-components of <Article/>.
*/}
<div>Hello World</div>
<Article.Metadata />
@MaximeHeckel
MaximeHeckel / App.js
Last active April 3, 2018 01:47
React sub-components Take 2 - First use of a sub-component example with the new context API
import React, { Component } from "react";
import Article from "./Article";
class App extends Component {
constructor() {
this.state = {
value: {
title: <h1>React sub-components with</h1>,
subtitle: (
<div>Lets make simpler and more flexible React components</div>
@MaximeHeckel
MaximeHeckel / App.js
Last active April 3, 2018 01:42
React sub-components Take 2 - Full sub-components example with the new context API
import React, { Component } from "react";
import Article from "./Article";
const text = `
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
`;
class App extends Component {
constructor() {
this.state = {
@MaximeHeckel
MaximeHeckel / Article.js
Last active March 27, 2018 01:58
React sub-components Take 2 - First sub-component example with the new context API
import React from "react";
// This creates the "Article Context" i.e. an object containing a Provider and a Consumer component
const ArticleContext = React.createContext();
// This is the Title sub-component, which is a consumer of the Article Context
const Title = () => {
return (
<ArticleContext.Consumer>
{({ title, subtitle }) => (
@MaximeHeckel
MaximeHeckel / App.js
Last active March 20, 2018 16:09
React subcomponents with new context API (React 16.3.0-alpha.2)
import React, { Component } from 'react';
const ArticleContext = React.createContext();
const OtherContext = React.createContext();
const OutOfContextComponent = OtherContext.Provider;
const Article = ArticleContext.Provider;
const View = ArticleContext.Consumer;
const Title = () => {
@MaximeHeckel
MaximeHeckel / Article.js
Created February 26, 2018 20:41
Sub-components IE/Edge workaround
...
const Title = () => null;
Title.displayName = 'Title';
const Subtitle = () => null;
Subtitle.displayName = 'Subtitle';
const Metadata = () => null;
Metadata.displayName = 'Metadata';
@MaximeHeckel
MaximeHeckel / MyArticleView.js
Last active February 1, 2018 18:33
Medium - React "sub-component" - Article usage
<Article>
<Article.Title>
My Article Title
</Article.Title>
</Article>