import React, { Component } from 'react'
import { connect } from 'react-redux'
import { setCurrentUser } from '../actions/index'
import { bindActionCreators } from 'redux'
export const withAutoLogin = (Scene) => {
// New component that wraps our existing component and adds
// additional functionality
class WithAutoLogin extends Component {
constructor(props) {
super(props);
// If there is a current user, navigate to home page
if (this.props.currentUser) {
...
}
}
render() {
return (
// apply props to component
<Scene {...this.props} />
);
}
}
// Connecting to redux
function mapStateToProps(state) {
return {
currentUser: state.currentUser
}
}
function mapDispatchToProps(dispatch) {
return bindActionCreators({
setCurrentUser: setCurrentUser
}, dispatch);
}
return connect(mapStateToProps,
mapDispatchToProps)(WithAutoLogin);
}
Friday, 12 April 2019
React/React Native - Higher Order Components
Higher order components is probably one of my favourite patterns that I have come across for React/React Native. It is when you pass a component to a function and it returns the component with additional functionality. This is very useful for code reuse. You may have seen this used before with the connect function provided by redux.
I typically use this for auto login if a user were to navigate to a login/register page e.g.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment