Go into your React project app folder and install following: npm install --save redux react-redux
We will create app called Songs.
To connect React with Redux, we will create two new components, Provider and Connect. Connect can communicate with Provider, which is at the top of hierarchy through contacts system. Contacts system allow parent component to communicate with any child component, even there is another component between them.
Structure
src/actions/index.js
We called this file index.js because when we then import it, we dont need to enter full path, we can specify only directory, it will automatically look for index.js.
src/reducers/index.js
src/components/SongList.js
src/components/SongDetail.js
src/components/App.js
src/index.js
Step by Step
We first do action creator.
actions/index.js
Then we do reducers. One reducer will return list of all songs. Second reducer will allow to select specified song after user click on the button. At the top we will import redux library and combine all reducers together with combineReducers function.
We will pass to combineReducers object. Keys of this object will be the keys which show up in inside our state object.
reducers/index.js
Then we need to import Provider, createStore and reducers. We need also wrap <App/> with <Provider>.
index.js
We now want to get list of songs into our SongList component. We will use connect for that. mapStateToProps - we will take our state and map it to props, so state will be then available in props and we can use it SongList component.
components/SongList.js
Při práci s reduxem potkáme tři základní konstrukce: store, akci a reducer.
Store
Store je objekt ve kterém jsou uložena naše data. Store poskytuje tyto 3 základní metody, v jednoduchosti je síla.
Akce
Pokud chceme změnit data ve store, popíšeme tuto změnu pomocí jednoduchého objektu zvaného akce. Objekt akce má jediný povinný atribut jménem type, ten slouží pro identifikaci. Další atributy vyplníme libovolně dle potřeby. Jinak řečeno: akce musí být jednoznačně identifikovatelná a musí obsahovat všechna data nutná k jejímu provedení.
Reducer
Posledním dílem skládačky je reducer. Funkce kterou napíšeme a vložíme do store, aby bezpečně modifikovala data podle požadavků vyjádřených akcí. Reducer tedy čeká uvnitř store až zavoláme dispatch(akce) a jakmile se tak stane, store zavolá reducer a předá mu:
state – současná data aplikace
action – celý objekt akce tak, jak jsme jej vložili do volání dispatch() (akce obsahuje identifikaci ‘type’ a jakákoliv další data potřebná k provedení)