SlideShare a Scribd company logo
1 of 84
Download to read offline
Greg Bergé, @neoziro
Recompacting your
React application
• From mixins to higher-order components
• Higher-order components
• Debugging & performances
From mixins to
higher-order components
React v0.3.0
First public release of React,
with mixins support.
29/03/2013
🗓
– from React documentation
“Sometimes very different components may
share some common functionality. These are
sometimes called cross-cutting concerns.”
React.createClass({
handleClick: function (event) {
event.preventDefault();
window.history.back();
}
render: function () {
return <a onClick={this.handleClick}>Back</a>;
}
});
I want to reuse the
back logic :)
Let’s create a mixin!
const BackMixin = {
handleClick: function (event) {
event.preventDefault();
window.history.back();
}
};
React.createClass({
mixins: [BackMixin],
render: function() {
return <a onClick={this.handleClick}>Back</a>;
}
});
Let’s put the rendering
logic inside!
const BackMixin = {
handleClick: function (event) {
event.preventDefault();
window.history.back();
}
renderBackButton: function () {
return <a onClick={this.handleClick}>Back</a>;
}
};
React.createClass({
mixins: [BackMixin],
render: function() {
return this.renderBackButton();
}
});
And now in real life…
React.createClass({
mixins: [BackMixin, RouterMixin],
handleClick: function (event) {
event.preventDefault();
this.transitionTo('home');
}
render: function() {
return (
<div>
<a onClick={this.handleClick}>Go home</a>
{this.renderBackButton()}
</div>
);
}
});
OK let’s refactor it.
😰
const BackMixin = {
handleBack: function (event) {
event.preventDefault();
window.history.back();
}
renderBackButton: function () {
return <a onClick={this.handleBack}>Back</a>;
}
};
A wild component
appears!
‼
React.createClass({
mixins: [BackMixin, PureRenderMixin, RouterMixin, ForwardMixin],
render: function() {
return (
<div>
<a onClick={this.handleClick}>Go back</a>
</div>
);
}
});
I forgot this one
Mixins
Name clashing
Hard refactoring
Complexity
😫
10/03/2015
React v0.13.0
Support for using ES6 classes
to build React components.
🗓
class extends React.Component {
handleClick = (event) => {
event.preventDefault();
window.history.back();
};
render() {
return <a onClick={this.handleClick}>Back</a>;
}
}
No mixin support.
Let’s try inheritance!
💡
class BackComponent extends React.Component {
handleClick = (event) => {
event.preventDefault();
window.history.back();
};
}
class extends BackComponent {
render() {
return <a onClick={this.handleClick}>Back</a>;
}
}
I want it to be pure!
class BackComponent extends React.PureComponent {
handleClick = (event) => {
event.preventDefault();
window.history.back();
};
}
class extends BackComponent {
render() {
return <a onClick={this.handleClick}>Back</a>;
}
}
Not every time…
We don’t need a hierarchy,
we need a composability.
😰
React Blog post
Mixins Considered harmful
by Dan Abramov
13/07/2016
🗓
For the first time,
“higher-order components”
concept is mentioned on React
website.
😳
What is a
higher-order component?
Component => EnhancedComponent
Do you know Redux?
connect(state => state)(TodoApp)
Higher-order components
step by step
class extends Component {
state = { value: '' };
handleChange = ({ target: { value } }) =>
this.setState({ value });
render() {
return (
<input
onChange={this.handleChange}
value={this.state.value}
/>
)
}
}
class extends Component {
state = { value: '' };
handleChange = ({ target: { value } }) =>
this.setState({ value });
render() {
return (
<input
onChange={this.handleChange}
value={this.state.value}
/>
)
}
}
Model
Controller
View
1. The View
const View = ({ onChange, value }) =>
<input onChange={onChange} value={value} />
const View = ({ onChange, value }) =>
<input onChange={onChange} value={value} />
const View = 'input'
2. The Model
const Model = class extends Component {
state = { value: '' }
handleChange = value =>
this.setState({ value })
render() {
return (
<View
onChange={({ target: { value } }) =>
handleChange(value)}
value={this.state.value}
/>
)
}
}
❌
My model is not
generic
const model = BaseComponent => class extends Component {
state = { value: '' }
handleChange = value => this.setState({ value })
render() {
return (
<BaseComponent
{...this.props}
onChange={this.handleChange}
value={this.state.value}
/>
)
}
}
More generic?
const withState = (stateName, handlerName, initialValue) =>
BaseComponent => class extends Component {
state = { [stateName]: initialValue }
handleChange = value => this.setState({ [stateName]: value })
render() {
return (
<BaseComponent
{...this.props}
{...{
[stateName]: this.state[stateName],
[handlerName]: this.handleChange,
}}
/>
)
}
}
const model = withState('value', 'onChange', '')
Recomp(act|ose)
const model = recompact.withState('value', 'onChange', ‘')
const model = recompact.withState('value', 'onChange', ‘')
const MyInput = model('input')
😒
2. The Controller
const controller = BaseComponent =>
class extends Component {
handleChange = ({ target: { value } }) =>
this.props.onChange(value);
render() {
return (
<BaseComponent
{...this.props}
onChange={handleChange}
/>
)
}
}
More generic?
const withHandlers = config =>
BaseComponent =>
class extends Component {
constructor(props) {
super(props)
this.handlers = {}
Object.keys(config).forEach((key) => {
this.handlers[key] = (...args) => config[key](this.props)(...args);
})
}
render() {
return (
<BaseComponent
{...this.props}
{...this.handlers}
/>
)
}
}
const controller = withHandlers({
onChange: ({ onChange }) => ({ target: { value }}) => onChange(value),
})
const controller = recompact.withHandlers({
onChange: ({ onChange }) => ({ target: { value }}) => onChange(value),
})
const MyInput = recompact.compose(
recompact.withState('value', 'onChange', ''),
recompact.withHandlers({
onChange: ({ onChange }) => ({ target: { value }}) => onChange(value),
}),
)('input')
class extends Component {
state = { value: '' };
handleChange = ({ target: { value } }) =>
this.setState({ value });
render() {
return (
<input
onChange={this.handleChange}
value={this.state.value}
/>
)
}
}
OK, you won 3 lines…
const MyBluePerfInput = recompact.compose(
// Performance
recompact.pure,
// Model
recompact.withState('value', 'onChange', ''),
// Controller
recompact.withHandlers({
onChange: ({ onChange }) => ({ target: { value } }) => onChange(value),
}),
// Style
recompact.withProps({ style: { color: ‘blue’ } }),
)('input')
Debugging &
performances
Recompose
isReferentiallyTransparentFunctionComponent
What is a referentially
transparent component?
• Function
• No default props
• No context
const MyBluePerfInput = recompact.compose(
// No transparent
recompact.pure,
// No transparent
recompact.withState('value', 'onChange', ''),
// No transparent
recompact.withHandlers({
onChange: ({ onChange }) => ({ target: { value } }) => onChange(value),
}),
// Transparent
recompact.withProps({ style: { color: ‘blue’ } }),
)('input')
Recompact
What are we really
doing?
We take some props and
return (or not) other props.
(next, props) => next(props)
subscribe, next…
it reminds me of something
props$ => props$
const mapProps = propsMapper =>
(next, props) => next(propsMapper(props))
const mapProps = propsMapper =>
props$ => props$.map(propsMapper)
Higher-order
components
Stream of props
Debugging is logging
export default recompact.compose(
recompact.withProps({ foo: 'bar' }),
recompact.debug(),
recompact.renameProp('foo', 'className'),
recompact.debug(),
)('input')
• Avoid mixins and inheritance
• Separate concerns using higher-order
components
• Create small higher-order components and
compose them
Thanks!

More Related Content

What's hot

How should you React to Redux
How should you React to ReduxHow should you React to Redux
How should you React to ReduxBrainhub
 
Mobx - performance and sanity
Mobx - performance and sanityMobx - performance and sanity
Mobx - performance and sanity500Tech
 
Higher Order Components and Render Props
Higher Order Components and Render PropsHigher Order Components and Render Props
Higher Order Components and Render PropsNitish Phanse
 
Mobx Performance and Sanity
Mobx Performance and SanityMobx Performance and Sanity
Mobx Performance and Sanity500Tech
 
Evan Schultz - Angular Summit - 2016
Evan Schultz - Angular Summit - 2016Evan Schultz - Angular Summit - 2016
Evan Schultz - Angular Summit - 2016Evan Schultz
 
No more promises lets RxJS 2 Edit
No more promises lets RxJS 2 EditNo more promises lets RxJS 2 Edit
No more promises lets RxJS 2 EditIlia Idakiev
 
SF Scala meet up, lighting talk: SPA -- Scala JDBC wrapper
SF Scala meet up, lighting talk: SPA -- Scala JDBC wrapperSF Scala meet up, lighting talk: SPA -- Scala JDBC wrapper
SF Scala meet up, lighting talk: SPA -- Scala JDBC wrapperChester Chen
 
Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016Nir Kaufman
 
Enterprise State Management with NGRX/platform
Enterprise State Management with NGRX/platformEnterprise State Management with NGRX/platform
Enterprise State Management with NGRX/platformIlia Idakiev
 
Egghead redux-cheat-sheet-3-2-1
Egghead redux-cheat-sheet-3-2-1Egghead redux-cheat-sheet-3-2-1
Egghead redux-cheat-sheet-3-2-1Augustin Bralley
 
첫 리액트 경험기
첫 리액트 경험기첫 리액트 경험기
첫 리액트 경험기석진 고
 
React new features and intro to Hooks
React new features and intro to HooksReact new features and intro to Hooks
React new features and intro to HooksSoluto
 
React performance tips, Тельман Агабабов
React performance tips, Тельман АгабабовReact performance tips, Тельман Агабабов
React performance tips, Тельман АгабабовSigma Software
 
Cambio de bases
Cambio de basesCambio de bases
Cambio de basesalcon2015
 

What's hot (20)

React with Redux
React with ReduxReact with Redux
React with Redux
 
How should you React to Redux
How should you React to ReduxHow should you React to Redux
How should you React to Redux
 
Mobx - performance and sanity
Mobx - performance and sanityMobx - performance and sanity
Mobx - performance and sanity
 
Higher Order Components and Render Props
Higher Order Components and Render PropsHigher Order Components and Render Props
Higher Order Components and Render Props
 
Mobx Performance and Sanity
Mobx Performance and SanityMobx Performance and Sanity
Mobx Performance and Sanity
 
Ngrx: Redux in angular
Ngrx: Redux in angularNgrx: Redux in angular
Ngrx: Redux in angular
 
Ngrx
NgrxNgrx
Ngrx
 
Evan Schultz - Angular Summit - 2016
Evan Schultz - Angular Summit - 2016Evan Schultz - Angular Summit - 2016
Evan Schultz - Angular Summit - 2016
 
No more promises lets RxJS 2 Edit
No more promises lets RxJS 2 EditNo more promises lets RxJS 2 Edit
No more promises lets RxJS 2 Edit
 
React&redux
React&reduxReact&redux
React&redux
 
SF Scala meet up, lighting talk: SPA -- Scala JDBC wrapper
SF Scala meet up, lighting talk: SPA -- Scala JDBC wrapperSF Scala meet up, lighting talk: SPA -- Scala JDBC wrapper
SF Scala meet up, lighting talk: SPA -- Scala JDBC wrapper
 
React redux
React reduxReact redux
React redux
 
Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016Redux with angular 2 - workshop 2016
Redux with angular 2 - workshop 2016
 
Enterprise State Management with NGRX/platform
Enterprise State Management with NGRX/platformEnterprise State Management with NGRX/platform
Enterprise State Management with NGRX/platform
 
Egghead redux-cheat-sheet-3-2-1
Egghead redux-cheat-sheet-3-2-1Egghead redux-cheat-sheet-3-2-1
Egghead redux-cheat-sheet-3-2-1
 
첫 리액트 경험기
첫 리액트 경험기첫 리액트 경험기
첫 리액트 경험기
 
Road to react hooks
Road to react hooksRoad to react hooks
Road to react hooks
 
React new features and intro to Hooks
React new features and intro to HooksReact new features and intro to Hooks
React new features and intro to Hooks
 
React performance tips, Тельман Агабабов
React performance tips, Тельман АгабабовReact performance tips, Тельман Агабабов
React performance tips, Тельман Агабабов
 
Cambio de bases
Cambio de basesCambio de bases
Cambio de bases
 

Viewers also liked

Nuxeo & React Native
Nuxeo & React Native Nuxeo & React Native
Nuxeo & React Native Nuxeo
 
Introducing the new "react-native upgrade"
Introducing the new "react-native upgrade"Introducing the new "react-native upgrade"
Introducing the new "react-native upgrade"Nicolas Cuillery
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonySébastien Rosset
 
React JS and why it's awesome
React JS and why it's awesomeReact JS and why it's awesome
React JS and why it's awesomeAndrew Hull
 

Viewers also liked (6)

Nuxeo & React Native
Nuxeo & React Native Nuxeo & React Native
Nuxeo & React Native
 
Let's Graph
Let's GraphLet's Graph
Let's Graph
 
Introducing the new "react-native upgrade"
Introducing the new "react-native upgrade"Introducing the new "react-native upgrade"
Introducing the new "react-native upgrade"
 
Productive development with react js
Productive development with react jsProductive development with react js
Productive development with react js
 
Créer une API GraphQL avec Symfony
Créer une API GraphQL avec SymfonyCréer une API GraphQL avec Symfony
Créer une API GraphQL avec Symfony
 
React JS and why it's awesome
React JS and why it's awesomeReact JS and why it's awesome
React JS and why it's awesome
 

Similar to Recompacting your React application with higher-order components and Recompose

JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!JSFestUA
 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7Dongho Cho
 
Reactивная тяга
Reactивная тягаReactивная тяга
Reactивная тягаVitebsk Miniq
 
JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Lightning Talks_React Perfomance JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Lightning Talks_React Perfomance GeeksLab Odessa
 
React Performance
React PerformanceReact Performance
React PerformanceMax Kudla
 
React JS Hooks Sheet .pdf
React JS Hooks Sheet .pdfReact JS Hooks Sheet .pdf
React JS Hooks Sheet .pdfnishant078cs23
 
React + Redux. Best practices
React + Redux.  Best practicesReact + Redux.  Best practices
React + Redux. Best practicesClickky
 
Relay Modern: architecture and workflow
Relay Modern: architecture and workflowRelay Modern: architecture and workflow
Relay Modern: architecture and workflowAlex Alexeev
 
Intro to React | DreamLab Academy
Intro to React | DreamLab AcademyIntro to React | DreamLab Academy
Intro to React | DreamLab AcademyDreamLab
 
The evolution of redux action creators
The evolution of redux action creatorsThe evolution of redux action creators
The evolution of redux action creatorsGeorge Bukhanov
 
Building complex User Interfaces with Sitecore and React
Building complex User Interfaces with Sitecore and ReactBuilding complex User Interfaces with Sitecore and React
Building complex User Interfaces with Sitecore and ReactJonne Kats
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)indeedeng
 
How Reactive do we need to be
How Reactive do we need to beHow Reactive do we need to be
How Reactive do we need to beJana Karceska
 
How do we use hooks
How do we use hooksHow do we use hooks
How do we use hooksJim Liu
 

Similar to Recompacting your React application with higher-order components and Recompose (20)

React hooks
React hooksReact hooks
React hooks
 
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
JS Fest 2019. Glenn Reyes. With great power comes great React hooks!
 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7
 
Reactивная тяга
Reactивная тягаReactивная тяга
Reactивная тяга
 
React 101
React 101React 101
React 101
 
JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Lightning Talks_React Perfomance JS Lab2017_Lightning Talks_React Perfomance
JS Lab2017_Lightning Talks_React Perfomance
 
React Performance
React PerformanceReact Performance
React Performance
 
React JS Hooks Sheet .pdf
React JS Hooks Sheet .pdfReact JS Hooks Sheet .pdf
React JS Hooks Sheet .pdf
 
React + Redux. Best practices
React + Redux.  Best practicesReact + Redux.  Best practices
React + Redux. Best practices
 
Relay Modern: architecture and workflow
Relay Modern: architecture and workflowRelay Modern: architecture and workflow
Relay Modern: architecture and workflow
 
Intro to React | DreamLab Academy
Intro to React | DreamLab AcademyIntro to React | DreamLab Academy
Intro to React | DreamLab Academy
 
The evolution of redux action creators
The evolution of redux action creatorsThe evolution of redux action creators
The evolution of redux action creators
 
React & Redux
React & ReduxReact & Redux
React & Redux
 
Introduction to Redux
Introduction to ReduxIntroduction to Redux
Introduction to Redux
 
Building complex User Interfaces with Sitecore and React
Building complex User Interfaces with Sitecore and ReactBuilding complex User Interfaces with Sitecore and React
Building complex User Interfaces with Sitecore and React
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
 
How Reactive do we need to be
How Reactive do we need to beHow Reactive do we need to be
How Reactive do we need to be
 
Why react matters
Why react mattersWhy react matters
Why react matters
 
Advanced redux
Advanced reduxAdvanced redux
Advanced redux
 
How do we use hooks
How do we use hooksHow do we use hooks
How do we use hooks
 

Recently uploaded

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentationphoebematthew05
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 

Recently uploaded (20)

AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
costume and set research powerpoint presentation
costume and set research powerpoint presentationcostume and set research powerpoint presentation
costume and set research powerpoint presentation
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 

Recompacting your React application with higher-order components and Recompose