Skip to content

Instantly share code, notes, and snippets.

@bultas
Last active December 2, 2017 14:57
Show Gist options
  • Save bultas/8b7bf073ce77e1a4e2601c8dca835eb0 to your computer and use it in GitHub Desktop.
Save bultas/8b7bf073ce77e1a4e2601c8dca835eb0 to your computer and use it in GitHub Desktop.
Dynamic Redux Connectors in React App
import React, { createElement } from 'react';
import { createStore } from 'redux';
import { render } from 'react-dom';
import { Provider, connect } from 'react-redux';
const ADD = 'ADD';
const store = createStore((state = 0, action) => {
if (action.type === ADD) {
return ++state;
}
return state;
});
const Connector = connect((state, { selector }) => {
return selector(state);
})(function Connector({ children, ...rest }) {
return children(rest);
});
function App() {
return (
<Connector selector={state => ({ state })}>
{({ state, dispatch }) => {
return (
<div>
{state}
<button
onClick={() => {
dispatch({ type: ADD });
}}
>
Add
</button>
</div>
);
}}
</Connector>
);
}
render(createElement(Provider, { store }, createElement(App)), document.querySelector('#app'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment