1-е преимущество: с Redux - вы можете получить доступ к состоянию из каждого компонента в вашем приложении.без Redux вам нужно связать состояние как подпорку от родителя к потомку, проблема в том, что слишком много цепочек, трудно понять код.например:
//Trying to pass the state of FirstComponent as props to ThirdComponent
class FirstComponent extends React.Component {
state = {
firstComponentState: 'some value'
}
render() {
return (
<SecondComponent
firstComponentState={firstComponentState}
/>
)
}
}
const SecondComponent = (props) => (
<ThirdComponent
firstComponentState={props.firstComponentState}
/>
)
const ThirdComponent = (props) => (
<div>{props.firstComponentState}</div>
)
Если ThirdComponent требуется доступ к состоянию FirstComponent - нам нужно связать состояние от родителя до потомка, пока оно не достигнет нужного компонента.Теперь, как будет выглядеть наш код, если нам понадобится связать состояние на 10 уровней вниз?это будет очень трудно понять.но с Redux - все, что нам нужно сделать, это подключить ThirdComponent к глобальному избыточному состоянию и использовать его.
** 2-е преимущество: * Проходное состояние между братьями и сестрами.рассмотрите этот код:
//Trying to pass the state of FirstSibling to SecondSibling
const Parent = () => (
<div>
<FirstSibling/>
<SecondSibling/>
</div>
)
class FirstSibling extends React.Component {
state = {
data: 'pass me to SecondSibling'
}
render() {
return (
<div>Something..</div>
)
}
}
const SecondSibling = () => (
<div>I need the state of FirstSibling</div>
)
Без Redux как мы можем передать состояние компонента FirstSibling компоненту SecondSibling?для этого нам нужно передать состояние на один уровень вверх - от FirstSibling до Parent, а от Parent - до SecondSibling.Это не лучшая практика для цепочки реквизита от детей к родителю.Теперь представьте, что у FirstSibling и SecondSibling есть дети, и мы хотим передать состояние между ними - код становится нечитаемым.но опять же, с Redux - все, что нам нужно сделать, это подключить нужный компонент к глобальному состоянию и получить данные напрямую.