O React 16.3.0 foi lançado e a API de contexto não é mais um recurso experimental. Dan Abramov (o criador do Redux) escreveu um bom comentário aqui sobre isso, mas foram 2 anos quando o Contexto ainda era um recurso experimental.
Minha pergunta é, na sua opinião / experiência, quando devo usar o React Context sobre React Redux e vice-versa?
javascript
reactjs
redux
react-redux
react-context
Alfrex92
fonte
fonte
duix
pacote npm. É apenas um gerenciador de estado simples com retornos de chamada, realmente fácil de implementar. Só para esclarecer: eu sou o criador.Respostas:
Como o Contexto não é mais um recurso experimental, é possível usá-lo diretamente no seu aplicativo e será ótimo para passar dados para componentes profundamente aninhados para os quais foi projetado.
Como Mark Erikson escreveu em seu blog :
Redux
é muito mais poderoso e fornece um grande número de recursos queContext Api
ele não fornece, também como o @danAbramov mencionouCabe ao Redux realmente atualizar sua implementação para aderir à mais recente API de contexto
A API de contexto mais recente pode ser usada para aplicativos em que você simplesmente usaria o Redux para passar dados entre componentes; no entanto, aplicativos que usam dados centralizados e manipulam solicitações de API em criadores de ação que usam
redux-thunk
ouredux-saga
ainda precisam de redux. Além desse redux, há outras bibliotecas associadas, como asredux-persist
que permitem salvar os dados da loja no localStorage e reidratar na atualização, que é o contexto em que a API ainda não suporta.Como @dan_abramov mencionou em seu blog Você pode não precisar do Redux , que o redux possui aplicativos úteis como
Com esses muitos aplicativos, é muito cedo para dizer que o Redux será substituído pela nova API de contexto
fonte
Se você estiver usando o Redux apenas para evitar a transmissão de objetos para componentes profundamente aninhados , poderá substituir o Redux pela
Context
API. Ele é exatamente destinado a este caso de uso.Por outro lado, se você estiver usando o Redux para todo o resto (com um contêiner de estado previsível, manipulando a lógica do aplicativo fora dos seus componentes, centralizando o estado do aplicativo, usando o Redux DevTools para rastrear quando, onde, por que e como o estado do aplicativo) alterado ou usando plug-ins como Redux Form , Redux Saga , Redux Undo , Redux Persist , Redux Logger , etc…), então não há absolutamente nenhuma razão para você abandonar o Redux. A
Context
API não fornece nada disso.E eu pessoalmente acredito que a extensão Redux DevTools é uma ferramenta de depuração incrível e subestimada, que justifica por si só continuar usando o Redux.
Algumas referências:
fonte
Prefiro usar o redux com o redux-thunk para fazer chamadas de API (também usando o Axios) e enviar a resposta aos redutores. É limpo e fácil de entender.
A API de contexto é muito específica para a parte react-redux de como os componentes do React estão conectados à loja. Para isso, o react-redux é bom. Mas se você quiser, como o Context é oficialmente suportado, você poderá usar a API do Context em vez do react-redux.
Portanto, a pergunta deve ser Context API vs react-redux, e não Context API vs redux. Além disso, a questão é um pouco opinativa. Como estou familiarizado com o react-redux e o uso em todos os projetos, continuarei a usá-lo. (Não há incentivo para eu mudar).
Mas se você está aprendendo redux hoje e não o usou em nenhum lugar, vale a pena dar uma chance à API de contexto e substituir react-redux pelo seu código personalizado da API de contexto. Talvez seja muito mais limpo assim.
Pessoalmente, é uma questão de familiaridade. Não há razão clara para escolher um sobre o outro, porque eles são equivalentes. E internamente, o react-redux usa o Context de qualquer maneira.
fonte
Os únicos motivos para usar o Redux para mim são:
Você provavelmente não precisa do nível de indireção de todo o aplicativo, por isso é bom misturar estilos e usar o estado / contexto local e o Redux, ao mesmo tempo.
fonte
De: quando usar o Redux?
fonte