Escolar Documentos
Profissional Documentos
Cultura Documentos
Com este artigo pretendo engajar aqueles que estão iniciando com
Redux, focando apenas nas partes básicas, usando o mínimo de
implementação para que funcione. Recomendo um conhecimento básico
de React, JSX, ES6+, e também alguns termos de programação
funcional.
As razões para se usar Redux. Caso você queira saber mais, deixo-lhes
aqui um artigo: https://medium.com/trainingcenter/tira-redux-
coloca-redux-eb3c4f1d7db8
Arquitetura do Redux
O Redux é uma implementação criada pelo Dan Abramov da
arquitetura Flux, que foi criada pelo Facebook. Ela soluciona o
problema de compartilhamento de estados entre componentes,
tornando-o unidirecional. A ilustração a seguir descreve tudo:
À esquerda é o problema da dificuldade de transmissão de estados, e à direita é a solução proposta pelo
Redux
Podemos ter apenas uma Store por aplicação, ou seja, ela é a Única Fonte
de Verdade (Single Source of Truth).
Pode não ter ficado muito claro agora, mas não precisa se preocupar,
pois com a aplicação será mais fácil de entender. Caso queira
informações mais detalhadas, recomendo a leitura da documentação
oficial:
https://redux.js.org/
Caso você possua npm 5.2+ ou maior, poderá instalar desta forma:
npm i -g create-react-app
… e ao finalizar:
create-react-app create-react-redux-app
cd create-react-redux-app
yarn start
ou com npm:
npm start
Bonitão não?
A idéia é que, quando clicarmos no botão Click me!, o texto "teste" seja
substituído pelo conteúdo que está no input, via Redux.
Para Yarn:
Para npm:
npm i -D redux react-redux
4. Crie a Store
Crie uma pasta na raíz da pasta /src chamada store. Dentro dela, crie
um arquivo index.js com o conteúdo:
5. Crie o Reducer
Como a Store é a Única Fonte de Verdade, teremos que combinar todos
os reducers da aplicação e enviar à Store. Crie uma pasta na raíz da pasta
/src chamada reducers. Dentro dela, crie um arquivo index.js com o
conteúdo:
Caso sua aplicação possua vários reducers, você pode combiná-los para
enviá-los à Store da seguinte forma, usando o método combineReducers .
const initialState = {
newValue: ''
};
src/actions/actionTypes.js:
src/reducers/clickReducer.js atualizado:
const initialState = {
newValue: ''
};
src/actions/index.js atualizado:
ReactDOM.render(
<Provider store={Store}>
<App />
</Provider>
, document.getElementById('root'));
registerServiceWorker();
https://medium.com/@oieduardorabelo/padrões-em-react-provider-
pattern-b520c37ed733
return (
<div className="App" style={{ paddingTop: '10px' }}>
<input type='text' />
<button>
Click me!
</button>
<h1>{newValue}</h1>
</div>
);
}
}
clickState: clickReducer
newValue: action.newValue
...
const { newValue } = this.props;
...
...
<h1>{newValue}</h1>
...
const initialState = {
newValue: 'Atualizado via Redux!'
};
Nossa tela atualizada, garantindo que a conexão com a Store foi bem sucedida!
render() {
const {
clickButton,
newValue
} = this.props;
return (
<div className="App" style={{ paddingTop: '10px' }}>
<input
onChange={this.inputChange}
type='text'
value={inputValue}
/>
<button onClick={() => clickButton(inputValue)}>
Click me!
</button>
<h1>{newValue}</h1>
</div>
);
}
}
Conclusão
Por enquanto isto é tudo pessoal. Segue o link do repositório com o
exemplo:
https://github.com/rafaelmaruta/create-react-redux-app
Recomendação de cursos
https://egghead.io/courses/getting-started-with-redux
https://www.udemy.com/react-redux-pt
https://www.udemy.com/curso-reactjs-ninja
3.4K 29