Migrating to React’s New Context API – kentcdodds

📝 Article => Migrating to React’s New Context API by @kentcdodds  | #ReactJS

  • Because of this significant change, I’m making an update to my advanced component patterns course on Egghead.io to use the new API rather than the old one.
  • The Old Context APIHere’s the version of the implementation with the old context API: – const TOGGLE_CONTEXT = ‘__toggle__’ – function ToggleOn({children}, context) { – const {on} = context[TOGGLE_CONTEXT] – return on ?
  • null : = { – [TOGGLE_CONTEXT]: ToggleButton(props, context) { – const {on, toggle} = context[TOGGLE_CONTEXT] – return ( – Switch on={on} onClick={toggle} {…props} / – ) – } – ToggleButton.contextTypes = { – [TOGGLE_CONTEXT]: Toggle extends React.Component { – static On = ToggleOn – static Off = ToggleOff – static…
  • on}), – () = ) – getChildContext() { – return { – [TOGGLE_CONTEXT]: { – on: this.state.on, – toggle: this.toggle, – }, – } – } – render() { – return div{this.props.children}/div – } – }With the old API, you had to specify a string for what context your component…
  • Here’s my new version of this same exercise: – const ToggleContext = React.createContext({ – on: false, – toggle: () = {}, – })class Toggle extends React.Component { – static On = ({children}) = ( – ToggleContext.Consumer – {({on}) = (on ?

With the recent release of React 16.3.0 came an official context API. You can learn more about the why and how behind this API from my previous blog post: “React’s ⚛️ new Context API”. Because of…
Continue reading “Migrating to React’s New Context API – kentcdodds”

Up and Running with Universal Components and Expo in the Trenches

Up and Running with Universal Components and Expo in the Trenches  #reactnative

  • Up and Running with Universal Components 🎤 – – Kurtis Kemple and Samantha Bretous and Samantha are joining us this month from NYC!
  • Universal components are a great way to maximize impact while minimizing the amount of repeated work.
  • Join Samantha and Kurt as they walk through what universal components are, what are some best practices, and most importantly, what are some pitfalls to avoid!
  • Kurt is a React / React Native / GraphQL enthusiast 🙌 Co-organizer of @NYCGraphQL 🗓 Technical Writer 🖋 Mentor 🎓 Fine Dancer🕺 – – – – Samantha is a Software Engineer at MLS blending the gap between web and mobile development through universal components.
  • Now, he’s trying to build and maintain a cross platform native app using only JavaScript.

We’re back in April with some more React Native awesomeness!🎤 Up and Running with Universal Components 🎤Kurtis Kemple (https://twitter.com/kurtiskemple) and Samantha Bretous (https://twitter.com/sam
Continue reading “Up and Running with Universal Components and Expo in the Trenches”

How to display Draft.js content as HTML – tuomo.me

How to display Draft.js content as HTML  #webdevelopment #webdev #ReactJS #react #javascript

  • At first however, it might not be so clear how to take the rich text representation that is created by Draft.js (=ContentState) and display it as HTML.
  • Draft.js itself doesn’t have an API to convert the content state to HTML.
  • One way to export your content state to HTML is to use npm package provides stateToHtml method which takes ContentState object as parameter and returns the content state as html.
  • Here is an example for a component that has Draft.js editor and as you type the editor’s content is displayed as html.
  • Getting HTML content of Draft.js editor is quite straight forward.

Continue reading “How to display Draft.js content as HTML – tuomo.me”

React’s ⚛️ new Context API – DailyJS – Medium

React’s ⚛️ new Context API   #reactjs

  • Here’s the simplest useful example I can come up with: – Here’s an even simpler version so you don’t have to open the codesandbox: – const ThemeContext = ThemeProvider extends React.Component { – state = {theme: ‘light’} – render() { – return ( – ThemeContext.Provider value={this.state.theme} – {this.props.children} – /ThemeContext.Provider…
  • , but if that’s not your jam, you could easily implement a Higher Order Component or something else using the context API (which is why it’s the best).
  • The React team will remove the warning about context being an experimental feature because it’s now a “first-class featureâ€� of the framework.
  • Here’s an example: – const ThemeContext = ThemeProvider extends React.Component {/* code */} – const ThemeConsumer = ThemeContext.Consumer – const LanguageContext = LanguageProvider extends React.Component {/* code */} – const LanguageConsumer = AppProviders({children}) { – return ( – LanguageProvider – ThemeProvider – {children} – /ThemeProvider – /LanguageProvider – ) -…
  • react-fns: Browser API’s turned into declarative React components and HoC’s by Jared Palmer ğŸ‘�react-composer: Compose render prop components (what I use in the codesandbox above) by jmeasreact-contextual: Tiny helper around Reacts new context API by Paul HenschelSome tweets from this last week: – P.S.

It’s way more ergonomic, it’s no longer “experimental,” and it’s now a first-class API! OH, AND IT USES A RENDER PROP! NOTE: This is a cross-post from my newsletter. I publish each email to my blog…
Continue reading “React’s ⚛️ new Context API – DailyJS – Medium”

React’s ⚛️ new Context API – DailyJS – Medium

  • Here’s the simplest useful example I can come up with:Here’s an even simpler version so you don’t have to open the codesandbox:const ThemeContext = ThemeProvider extends React.Component { state = {theme: ‘light’} render() { return ( ThemeContext.Provider value={this.state.theme} {this.props.children} /ThemeContext.Provider ) }}class App extends React.Component { render() { ThemeProvider ThemeContext.Consumer…
  • The React team will remove the warning about context being an experimental feature because it’s now a “first-class feature” of the framework.
  • But even when we do feel it, we’ll have a solid, core React API to lean on to help us avoid the problem.Practical ContextOne question that I’ve seen a lot about the new context API (or the render prop pattern in general) is how to compose providers and consumers together….
  • Here’s an example:const ThemeContext = ThemeProvider extends React.Component {/* code */}const ThemeConsumer = ThemeContext.Consumerconst LanguageContext = React.createContext(‘en’)class LanguageProvider extends React.Component {/* code */}const LanguageConsumer = AppProviders({children}) { return ( LanguageProvider ThemeProvider {children} /ThemeProvider /LanguageProvider )}function { return ( LanguageConsumer {language = ( ThemeConsumer {theme = children({language, theme})} /ThemeConsumer )} /LanguageConsumer…
  • react-fns: Browser API’s turned into declarative React components and HoC’s by Jared Palmer 👏react-composer: Compose render prop components (what I use in the codesandbox above) by jmeasreact-contextual: Tiny helper around Reacts new context API by Paul HenschelSome tweets from this last week:P.

It’s way more ergonomic, it’s no longer “experimental,” and it’s now a first-class API! OH, AND IT USES A RENDER PROP! NOTE: This is a cross-post from my newsletter. I publish each email to my blog…
Continue reading “React’s ⚛️ new Context API – DailyJS – Medium”

Learn to build #VirtualReality applications with #JavaScript 💻🕹 #ReactVR lessons ➡ ❤🍭🤘 Insp…

  • If you find my tutorials helpful, please consider donating to support my free web development resources.The more money I raise, the more content I can produce.Thank you,Commander Candy – – React VR is a JavaScript framework used to create Virtual Reality applications.
  • This lesson was inspired by a workshop I attended: ReactVR – a VR Workshop with Javascript.
  • You will need Node.JS and React VR installed – – – – GOTO: React VR: Getting Started – – – – Follow the instructions.
  • ➼ – make a directory called reactVR – – ➼ – Change directory to reactVR – – ➼ – Add the Basics code to the directory – – You will see the following JSX components: – – ✶ Pano Component — Panoramic Picture – – ✶ Text Component — “Hello”…
  • ✶ Goto: localhost:8081/vr/ – – – – ✶ The first load will take a while, but don’t worry.

Learn how to use React (javascript)
to create virtual reality applications.
In this lesson we install and configure ReactJS.
Easy to follow tutorial!
Continue reading “Learn to build #VirtualReality applications with #JavaScript 💻🕹
#ReactVR lessons ➡
❤🍭🤘
Insp…”

The Beginner’s Guide to ReactJS – kentcdodds

  • You can find it here: http://kcd.im/news-a11yTwo weeks ago, my newsletter was an overview of the Advanced React Component Patterns course (that’s been published today!)
  • This week I’d like to talk a little bit about the other course that was published: The Beginner’s Guide to ReactJS.In the beginner’s course every lesson is an individual index.html file.
  • If you ever teach a total beginner React, make sure that you help them get a solid understanding that creating React elements is not magic and that JSX is a really simple abstraction on top of React.createElement.
  • Learn React Fundamentals and Advanced Patterns — I’m just pretty excited about the course release!Egghead.io Sale — Save 30% on a year subscription!ReactPrimer – React component prototyping tool that generates fully connected class component code.Partial Application Lambda Parameter Syntax for JavaScript — Awesome use of babel-macrosUsing Glitch as a UNIX command line playground — Interesting idea!Some tweets from…
  • 🧟🧟‍♂️🏹 29 Nov 2017I’m having a conversation about semicolons again️ 30 Nov 2017Next language I learn will be @reasonml 👌 3 Dec my big announcement!My @eggheadio courses have been published and are totally FREE!“Learn React Fundamentals and Advanced Patterns” 4 Dec 2017P.

The course is free forever on Egghead.io! Let’s talk about how it teaches even developers experienced with React ⚛️ NOTE: This is a cross-post from my newsletter. I publish each email two weeks after…
Continue reading “The Beginner’s Guide to ReactJS – kentcdodds”

Advanced React Component Patterns – kentcdodds

Advanced #ReactJS Component Patterns:  by @kentcdodds #JavaScript

  • Two of my courses will be (have now been) released as part of Egghead’s annual Christmas course release celebration 🎉 One is The Beginner’s Guide to ReactJS and the other is Advanced React Component Patterns.
  • 👀The course starts with a single lesson where I implement a simple toggle component that manages its own state.
  • My hope is that by doing things this way you can quickly identify the trade-offs of the different patterns and know when each pattern would be most appropriate.The course wraps up by refactoring the toggle component to a redux component affectionately called “Rendux.” I think that you’ll be blown away…
  • This way we can easily create custom components which have access to the toggle component’s on state and the toggle helper function.There are actually six lessons dedicated to Higher Order Components in this course.
  • Hopefully with this refactor you’ll see both the power and the simplicity of the render prop pattern.The basic idea of the pattern is that rather than have the toggle component be responsible for doing anything special in the render method, we delegate that responsibility over to the user and we…

An overview of some of the patterns covered in my recently released Egghead.io course (free until Friday). NOTE: This is a cross-post from my newsletter. I publish each email two weeks after it’s…
Continue reading “Advanced React Component Patterns – kentcdodds”

The secret to being a top developer is building things! Here’s a list of fun apps to build!

  • Here’s a list of fun apps to build!You can only become a great developer by putting the effort in.
  • Keep it conflict free, use whatever you want!Project #1: Trello CloneTrello clone by Indrek Lasn — Demo LinkWhat you will learn from building a trello clone:RoutingDrag and dropCreating new objects (boards, lists, cards)Handling inputs and validationClient side path: How to use local storage, saving data to the local storage, reading data from the local…
  • What you will learn:Creating users, managing users,Interacting with a database — creating, reading, editing, deleting users.Input validation and how to work with formsProject #3: Cryptocurrency tracker (native mobile app)Github repositoryHAS to be a native app — Swift, Objective-C, React Native, Java, Kotlin allowed.
  • 😊What you will learn:How native apps work.Fetching data from an API.How native layouts work.How to work with mobile simulators.Use this API.
  • Post in comments if you find a better one.In case you’re interested in how this was built, I wrote a tutorial for it.Project #4: Setup your very own webpack config from scratchWell, technically this is not an app but it’s still extremely useful to understand how webpack works under the hood….

You can only become a great developer by putting the effort in. Imagine for a moment — You can’t become fit physically by reading a lot about fitness. You actually need to go to the gym and put the…
Continue reading “The secret to being a top developer is building things! Here’s a list of fun apps to build!”

Rendering a function with React – kentcdodds

  • But there are reasons for the API as it is and that’s not what we’re going over in this newsletter…With ReactSo thinking about this in the context of React:const getHomeContent = getContent(‘pages.home’)const ui = ( a href=”/about” {getHomeContent(‘nav.about’)} /a)// that’ll get you:a href=”/about”About/aSo far so good.
  • Anyway, this will break the app:const getHomeContent = getContent(‘pages.typo’)const ui = ( a href=”/about” {getHomeContent(‘nav.about’)} /a)// 💥 error 💥Again, this is happening because getContent(‘pages.typo’) will return the string {pages.typo} (to indicate that there’s no content at that path and the developer needs to fix that problem to get the content)….
  • The issue is that you can’t invoke a string but that’s what’s happening because getHomeContent is a string, not a function.A solution and a new problemSo the change I made this week makes it so when there’s no content at a given path, instead of a string, it returns a “sorta-curried”…
  • No problem.So now this wont throw an error, but we lose rendering the path if there’s no content!const getHomeContent = getContent(‘pages.typo’)const ui = ( a href=”/about” {getHomeContent(‘nav.about’)} /a)// that’ll get you:a href=”/about”/aAnd we want to make sure that we show the missing content so it’s more obvious for developers (yes…
  • Let’s rewrite the above to make this more clear:const getHomeContent = getContent(‘pages.typo’)const aboutContent = ui = a in this example is a function because the call to getContent had a typo, so we’ll never actually find content that matches the full path.

NOTE: This is a cross-post from my newsletter. I publish each email two weeks after it’s sent. Subscribe to get more content like this earlier right in your inbox! 💌 This week I was working on an…
Continue reading “Rendering a function with React – kentcdodds”