Hogyan történik az adatok kölcsönhatása a Redux és a React komponens között?
sobes.tech MI
Válasz az MI-től
A kölcsönhatás három fő mechanizmuson keresztül valósul meg: connect, useSelector és useDispatch.
-
connect (osztály komponensekhez, de funkcionális komponensekkel is használható): Kapcsolja a React komponenst a Redux tárolóhoz. Két függvényt fogad:
mapStateToPropsésmapDispatchToProps.mapStateToProps(state, ownProps): Lekéri az állapotot a Store-ból és a komponens propsait, visszaadva egy objektumot az állapot adataival, amelyek elérhetők a propsokon keresztül.mapDispatchToProps(dispatch, ownProps): Fogadja adispatchfüggvényt és a komponens propsait, visszaadva egy objektumot az akciófüggvényekkel, amelyek elérhetők a propsokon keresztül az akciók küldéséhez a Store-ba.- A
connectáltal visszaadott érték egy felső szintű függvény, amely becsomagolja a komponenst.
// Kódrészlet import { connect } from 'react-redux'; const mapStateToProps = (state) => ({ count: state.counter.count }); const mapDispatchToProps = (dispatch) => ({ increment: () => dispatch({ type: 'INCREMENT' }) }); const MyComponent = ({ count, increment }) => ( <div> <p>{count}</p> <button onClick={increment}>Növel</button> </div> ); export default connect(mapStateToProps, mapDispatchToProps)(MyComponent); -
useSelector (hook funkcionális komponensekhez): Lehetővé teszi adatok kinyerését a Redux Store állapotából. Egy szelektor függvényt fogad, amely a jelenlegi Redux állapotot kapja argumentumként, és visszaadja a kívánt adatrészt.
// Kódrészlet import { useSelector } from 'react-redux'; const MyFunctionalComponent = () => { const count = useSelector(state => state.counter.count); return ( <div> <p>{count}</p> </div> ); }; -
useDispatch (hook funkcionális komponensekhez): Visszaad egy hivatkozást a Redux Store
dispatchfüggvényére. Az akciók küldésére (dispatch) használják.// Kódrészlet import { useDispatch } from 'react-redux'; const MyFunctionalComponent = () => { const dispatch = useDispatch(); const handleIncrement = () => { dispatch({ type: 'INCREMENT' }); }; return ( <button onClick={handleIncrement}>Növel</button> ); };
Összefoglalva, a Redux-ból származó adatok (a connect vagy useSelector segítségével) elérhetők a komponensben props vagy változók formájában, és a státusz módosítására szolgáló funkciók (amelyeket a connect vagy useDispatch segítségével adnak át) az akciók küldésére használhatók, amelyeket a redukálók dolgoznak fel, és frissítik a Store állapotát. Amikor a megfelelő állapot rész változik, a kapcsolódó komponens automatikusan újrarenderelődik az új adatokkal.