Я только что узнал, что мы можем уменьшить сложность реактивного проекта, используя Redux. С единственным источником правды (хранилищем) нам не нужно передавать состояния компонентам, которые в них не нуждаются. Я борюсь с пониманием этого утверждения.
Скажем, у меня есть три компонента, A, B и C. A - это контейнер с состоянием, называемым text
. B - это пользовательская кнопка, а C отображает только текст. Всякий раз, когда нажимается B, он обновляет состояние в A. Затем C отображает обновленный текст.
A
/ \
C B
Я попытался применить редукс к приложению и обнаружил, что мне все еще нужно передать реквизит. Разница лишь в том, что я передаю this.props.text
вместо this.state.text
.
Я не могу понять, как излишняя польза может принести пользу подобному приложению.
App.js
import React, { Component } from "react";
import { connect } from 'react-redux';
import MyButton from "./MyButton";
import { handleClick } from "./actions";
import Display from "./Display"
class App extends Component {
render() {
return (
<div className="App">
<MyButton onClick={()=>this.props.handleClick(this.props.text)} />
<Display text={this.props.text} />
</div>
);
}
}
const mapStateToProps = state => ({
text: state.text.text
})
const mapDispatchToProps = dispatch => ({
handleClick: (text) => dispatch(handleClick(text))
})
export default connect(mapStateToProps, mapDispatchToProps)(App)
Кроме того, если у нас есть другое приложение со структурой, показанной ниже. Скажем, B не заботится о состоянии A, но C нуждается в нем для отображения текста. Можем ли мы пропустить B и просто позволить C использовать состояние A?
A
|
B
|
C