Чӣ гуна муоширати маълумотҳо байни Redux ва компонент дар React сурат мегирад?
sobes.tech AI
Ҷавоб аз AI
Интераксията се осъществява чрез три основни механизма: connect, useSelector и useDispatch.
-
connect (за класови компоненти, но може да се използва и с функционални): Свързва React компонента с хранилището Redux. Приема две функции:
mapStateToPropsиmapDispatchToProps.mapStateToProps(state, ownProps): Получава състоянието от Store и пропсите на компонента, връща обект с данни от състоянието, които ще бъдат достъпни чрез пропс.mapDispatchToProps(dispatch, ownProps): Получава функциятаdispatchи пропсите на компонента, връща обект с функции-акшъни, които ще бъдат достъпни чрез пропс за изпращане на действия към Store.- Стойността, която връща
connect— е функция от по-висок ред, която обвива компонента.
// Фрагмент от код 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}>Increment</button> </div> ); export default connect(mapStateToProps, mapDispatchToProps)(MyComponent); -
useSelector (hook за функционални компоненти): Позволява извличане на данни от състоянието на Redux Store. Приема функция-селектор, която получава текущото състояние на Redux като аргумент и връща желания фрагмент от данни.
// Фрагмент от код import { useSelector } from 'react-redux'; const MyFunctionalComponent = () => { const count = useSelector(state => state.counter.count); return ( <div> <p>{count}</p> </div> ); }; -
useDispatch (hook за функционални компоненти): Връща препратка към функцията
dispatchот Redux Store. Използва се за изпращане (dispatching) на действия към Store.// Фрагмент от код import { useDispatch } from 'react-redux'; const MyFunctionalComponent = () => { const dispatch = useDispatch(); const handleIncrement = () => { dispatch({ type: 'INCREMENT' }); }; return ( <button onClick={handleIncrement}>Increment</button> ); };
В крайна сметка, данните от Redux (получени чрез connect или useSelector) стават достъпни в компонента като пропсове или променливи, а функциите за промяна на състоянието (передани чрез connect или useDispatch) се използват за изпращане на действия, които се обработват от редукторите и актуализират състоянието на Store. При промяна на съответната част от състоянието, свързаният компонент автоматично се пререндерира с новите данни.