【发布时间】:2019-10-12 15:35:56
【问题描述】:
我刚刚了解到,我们可以使用 redux 降低 React 项目的复杂性。使用单一数据源(存储),我们不需要将状态传递给不需要它们的组件。我正在努力理解这个陈述。
假设我有三个组件,A、B 和 C。A 是一个状态为 text 的容器。 B 是自定义按钮,C 仅显示文本。每当单击 B 时,它都会更新 A 中的状态。然后 C 将显示更新后的文本。
A
/ \
C B
我尝试过将redux应用到app上,发现还是需要传递props。唯一的区别是我传递的是this.props.text 而不是this.state.text。
我看不出 redux 如何让这样的应用受益。
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
【问题讨论】:
-
我想我找到了解决方案。我只是创建了一个文件
stores.js并导出了商店。所以我可以在子组件需要它时调用store.getState()来导入它并检索状态。 -
将 props 向下传递到多个组件以便它可以到达链底部的单个组件(在本例中为 C)的做法称为“prop Drilling”。我不想直接将其添加到标题中,但希望这对 SEO 有所帮助。
标签: javascript reactjs redux react-redux