npm install react-redux
import { Provider, connect } from 'react-redux'
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux'
import { createStore } from 'redux';
import MyRootComponent from './MyRootComponent';
const store = createStore((state, action) => ({}));
ReactDOM.render(
<Provider store={store}>
<MyRootComponent />
</Provider>,
rootEl
)
import React from 'react';
import { connect } from 'react-redux';
import { addTodo } from '../actions';
class App extends React.Component {
render() {
console.log(this.props.todos);
console.log(this.props.addTodo);
return <h1>Hello!</h1>
}
}
const mapStateToProps = state => ({ todos: state.todos });
const mapDispatchToProps = dispatch => ({ addTodo: todo => dispatch(addTodo(todo)) })
export default connect(mapStateToProps, mapDispatchToProps)(App);
connect(null, mapDispatchToProps)(App)
import React from 'react';
import { connect } from 'react-redux';
class App extends React.Component {};
export default connect(
state => ({
todos: state.todos,
filter: state.filter,
})
)(App)
connect(mapStateToProps)(App)
import React from 'react'
import { connect } from 'react-redux';
import { addTodo, removeTodo } from '../actions';
class App extends React.Component {}
export default connect(
state => state,
dispatch => ({
addTodo: todo => dispatch(addTodo()),
removeTodo: todo => dispatch(removeTodo()),
});
)(App);
If actions names is same as props names shortcut could be used.
import React from 'react'
import { connect } from 'react-redux';
import { addTodo, removeTodo } from '../actions';
class App extends React.Component {}
// produces same result as above
export default connect(
state => state,
{ addTodo, removeTodo },
)(App);