¿Cuál es la diferencia entre useContext y Redux?

useContext: useContext es un gancho que proporciona una forma de pasar datos a través del árbol de componentes sin pasar accesorios manualmente a través de cada componente anidado.

Sintaxis:

const Context = useContext(initialValue);

Estructura del proyecto: Se verá así.

Ejemplo: en este ejemplo, App.js envía datos al componente ComC con la ayuda de useContext.

Aplicación.js

Javascript

import React, { createContext } from 'react';
import "./index.css";
import ComB from './ComB';
  
const Data = createContext();
  
export default function App() {
  return (
    <div className="App">
      <Data.Provider value={"Welcome to GFG"}>
        <ComB />
      </Data.Provider>
    </div>
  );
}
  
export { Data };

ComB.js

Javascript

import React, { useState } from "react";
import ComC from "./ComC";
  
const ComB = () => {
  const [show, setShow] = useState(false);
  return (
    <>
      {show ? <ComC /> : null}
      <button onClick={() => setShow(!show)}>
        Click ME</button>
    </>
  );
}
  
export default ComB;

ComC.js

Javascript

import React, { useContext } from 'react';
import { Data } from './App';
  
const ComC = ({ name }) => {
  const context = useContext(Data);
  return <h1>{context}</h1>
}
  
export default ComC;

Producción:

Redux: Redux es una biblioteca de gestión de estado utilizada en aplicaciones de JavaScript. Es muy popular para React y React-Native. Simplemente administra el estado y los datos de su aplicación.

Partes de construcción de redux:

  1. Acción
  2. reductor
  3. Tienda

Estructura del proyecto: Se verá así.

Ejemplo: En este ejemplo, hemos creado dos botones, uno incrementará el valor y otro disminuirá el valor. Con Redux, estamos administrando el estado.

Aplicación.js

Javascript

import React from 'react';
import './index.css';
import { useSelector, useDispatch } from 'react-redux';
import { incNum, decNum } from './actions/index';
  
function App() {
    
  const mystate = useSelector((state) => state.change);
  const dispatch = useDispatch();
  
  return (
    <>
      <h2>Increment/Decrement the number using Redux.</h2>
      <div className="app">
        <h1>{mystate}</h1>
        <button onClick={() => dispatch(incNum())}>+</button>
        <button onClick={() => dispatch(decNum())}>-</button>
      </div>
    </>
  );
}
  
export default App;

index.js (en la carpeta src/actions )

Javascript

export const incNum = () => {
   return{ type:"INCREMENT"}
}
  
export const decNum = () => {
   return{ type:"DECREMENT"}
}

func.js

Javascript

const initialState = 0;
  
const change = (state = initialState, action) => {
  switch (action.type) {
    case "INCREMENT": return state + 1;
    case "DECREMENT": return state - 1;
    default: return state;
  }
}
  
export default change;

index.js (en la carpeta src/reducers )

Javascript

import change from './func'
import {combineReducers}from 'redux';
  
const rootReducer = combineReducers({change});
  
export default rootReducer;

tienda.js

Javascript

import {createStore} from 'redux';
import rootReducer from './reducers/index';
  
const store = createStore(rootReducer,window.__REDUX_DEVTOOLS_EXTENSION__ && 
window.__REDUX_DEVTOOLS_EXTENSION__());
  
export default store;

index.js (en la carpeta src )

Javascript

import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App.jsx'
import store from './store';
import { Provider } from 'react-redux';
  
ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>
  , document.getElementById("root")
);

Producción:

Alguna diferencia entre useContext y Redux:

useContext 

redux

useContext es un gancho. Redux es una biblioteca de gestión de estado.
Se utiliza para compartir datos. Se utiliza para gestionar datos y estado.
Los cambios se realizan con el valor Contexto. Los cambios se realizan con funciones puras, es decir, reductores.
Podemos cambiar el estado en él. El estado es de solo lectura. No podemos cambiarlos directamente.
Vuelve a representar todos los componentes cada vez que hay alguna actualización en la propuesta de valor del proveedor. Solo vuelve a renderizar los componentes actualizados.
Es mejor usarlo con aplicaciones pequeñas. Es perfecto para aplicaciones más grandes. 
Es fácil de entender y requiere menos código. Es bastante complejo de entender.

Publicación traducida automáticamente

Artículo escrito por archnabhardwaj y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *