<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>React on Benny Simmonds</title>
    <link>https://www.bencode.io/tags/react/</link>
    <description>Recent content in React on Benny Simmonds</description>
    <generator>Hugo -- 0.149.1</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 28 Nov 2025 17:13:03 +1000</lastBuildDate>
    <atom:link href="https://www.bencode.io/tags/react/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>React environment variables in an nginx container</title>
      <link>https://www.bencode.io/posts/react-build/</link>
      <pubDate>Sat, 21 Aug 2021 22:05:15 +0000</pubDate>
      <guid>https://www.bencode.io/posts/react-build/</guid>
      <description>&lt;p&gt;Your React app is ready to ship. Congratulations!&lt;/p&gt;
&lt;p&gt;Packaging for production is (and should) be different from your development configuration.&lt;/p&gt;
&lt;p&gt;In the case of &lt;a href=&#34;https://create-react-app.dev/&#34;&gt;Create React App&lt;/a&gt; the toolchain is rich, includes development productivity conveniences such as hot reloading, source maps and &lt;a href=&#34;https://create-react-app.dev/docs/adding-custom-environment-variables/&#34;&gt;custom environment variables&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This toolchain is mind blowingly productive as you develop the app, &lt;code&gt;npm start&lt;/code&gt; and watch the magic unfold.&lt;/p&gt;
&lt;p&gt;At this point, its possible to put the React app one big (~1.7GB) happy container:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Redux</title>
      <link>https://www.bencode.io/posts/redux/</link>
      <pubDate>Wed, 29 Apr 2020 12:04:16 +0000</pubDate>
      <guid>https://www.bencode.io/posts/redux/</guid>
      <description>&lt;p&gt;Once you start working with &lt;a href=&#34;https://www.bencode.io/posts/react/&#34;&gt;React&lt;/a&gt; in anger, there is a tipping point to be aware of where:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the complexity of data flows piles up&lt;/li&gt;
&lt;li&gt;the same data is being rendered in multiple places&lt;/li&gt;
&lt;li&gt;the number of state changes blow out&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Being able to tackle these problems in a single place is where Redux fits in.&lt;/p&gt;
&lt;h1 id=&#34;contents&#34;&gt;Contents&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#contents&#34;&gt;Contents&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-problem&#34;&gt;The Problem&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#option-1-lift-the-state&#34;&gt;Option 1 lift the state&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#option-2-react-context&#34;&gt;Option 2 react context&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#option-3-redux&#34;&gt;Option 3 Redux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#a-chat-with-redux&#34;&gt;A chat with redux&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#container-vs-presentation-components&#34;&gt;Container vs Presentation Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-redux-principles&#34;&gt;The Redux Principles&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#actions&#34;&gt;Actions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#the-store&#34;&gt;The Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#immutability&#34;&gt;Immutability&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#reducers&#34;&gt;Reducers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#react-redux&#34;&gt;React-Redux&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#react-redux-provider&#34;&gt;React-Redux Provider&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#react-redux-connect&#34;&gt;React-Redux Connect&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#mapstatetoprops&#34;&gt;mapStateToProps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#mapdispatchtoprops&#34;&gt;mapDispatchToProps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#redux-setup&#34;&gt;Redux Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#async-and-apis&#34;&gt;Async and APIs&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#mock-api&#34;&gt;Mock API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#api-client-wrappers&#34;&gt;API Client Wrappers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#redux-middleware&#34;&gt;Redux Middleware&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#redux-async-libraries&#34;&gt;Redux Async Libraries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thunks&#34;&gt;Thunks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#conditional-mapstatetoprops&#34;&gt;Conditional mapStateToProps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#polish-the-finer-things&#34;&gt;Polish (the finer things)&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#spinner-component&#34;&gt;Spinner component&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#status-api-and-feedback&#34;&gt;Status API and feedback&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#server-side-validation&#34;&gt;Server side validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#client-side-validation&#34;&gt;Client side validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#optimistic-deletes&#34;&gt;Optimistic deletes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#testing&#34;&gt;Testing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#redux-connected-components&#34;&gt;Redux Connected Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#action-creators&#34;&gt;Action Creators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#thunks-1&#34;&gt;Thunks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#reducers-1&#34;&gt;Reducers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#store&#34;&gt;Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;the-problem&#34;&gt;The Problem&lt;/h1&gt;
&lt;p&gt;Imagine a fairly deep component hierarchy, starting with your top level &lt;code&gt;App&lt;/code&gt; component. Deep down the tree, there are two child components that need to access a common piece of data (e.g. customer data). How should these components access the data they require?&lt;/p&gt;</description>
    </item>
    <item>
      <title>React v19</title>
      <link>https://www.bencode.io/posts/react/</link>
      <pubDate>Sun, 05 May 2019 22:08:10 +1000</pubDate>
      <guid>https://www.bencode.io/posts/react/</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#react&#34;&gt;React&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#react-no-frills&#34;&gt;React No Frills&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tools&#34;&gt;Tools&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#npm&#34;&gt;npm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#prettier&#34;&gt;Prettier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#eslint&#34;&gt;ESLint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#vite&#34;&gt;Vite&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#vite-proxy&#34;&gt;Vite Proxy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#typescript&#34;&gt;TypeScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#bleeding-edge-and-alternative-tools&#34;&gt;Bleeding Edge and Alternative Tools&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#jsx&#34;&gt;JSX&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#dom-control&#34;&gt;DOM control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#styling&#34;&gt;Styling&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#rendering-lists&#34;&gt;Rendering Lists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#handling-events&#34;&gt;Handling Events&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#passing-parameters-to-event-handlers&#34;&gt;Passing Parameters to Event Handlers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#passing-jsx-as-props&#34;&gt;Passing JSX as Props&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#react-hooks&#34;&gt;React Hooks&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#usestate&#34;&gt;useState&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#useeffect&#34;&gt;useEffect&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#custom-hooks&#34;&gt;Custom Hooks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#usecontext&#34;&gt;useContext&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#useref&#34;&gt;useRef&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#forms-and-user-input&#34;&gt;Forms and User Input&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#push-cart-to-server&#34;&gt;Push Cart to Server&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#react-ecosystem&#34;&gt;React Ecosystem&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#tanstack-router&#34;&gt;TanStack Router&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#vite-setup&#34;&gt;Vite Setup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#routetreegents&#34;&gt;routeTree.gen.ts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#router-setup&#34;&gt;Router Setup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#tanstack-query&#34;&gt;TanStack Query&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#resources&#34;&gt;Resources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;react&#34;&gt;React&lt;/h2&gt;
&lt;p&gt;React is a JavaScript &lt;em&gt;library&lt;/em&gt; for building component based interactive UI&amp;rsquo;s.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
