在同一个组件

时间:2017-03-23 23:19:42

标签: reactjs parameters state browser-history

我对React很新,我试图创建一个如此运作的应用程序:

  • 该应用包含多个页面,每页都有多个组件。
  • 其中一个组件是统计信息,当用户与页面上的组件交互时,它可能会发生变化。
  • 当用户点击某个组件时,他们将被带到"不同的"页面,它实际上只是另一个页面,具有不同的文本,数据等。这是通过browserHistory.push()方法执行的。我希望能够继承已更改的统计数据'从一个页面到下一个页面的组件,但我不知道该怎么做。此外,由于我在Page组件中设置 stats 的默认值,似乎任何将更改的值传递到新页面的尝试都会导致重写新值。任何人都可以帮助我吗?

感谢。

2 个答案:

答案 0 :(得分:2)

州应该高于需要访问该州的所有组件的级别。

请记住,React的一个原则是沿着组件层次结构的“单向”数据流。从本质上讲,数据/状态应该处于较高的水平,然后传递给子组件并根据需要进行消费。

在您的情况下,您需要在多个页面中显示一些“统计信息”数据。因此,“stats”需要由您的Page组件所有上方的组件拥有 - 可能是应用程序本身的根组件。页面本身只会获取数据并进行渲染,可能还有一些适合编辑数据的回调。

在官方文档的“反思中思考”中,阅读更多关于Facebook的React哲学:https://facebook.github.io/react/docs/thinking-in-react.html#step-4-identify-where-your-state-should-live

答案 1 :(得分:1)

要考虑的一个选项是使用React Redux来存储应用程序的状态。然后,您可以使用def saveCSV(self): filename = QFileDialog.getSaveFileName(self, "Save File", d.now().strftime("%Y-%m-%d_%Hh%M")+".csv", "All Files (*);; CSV Files (*.csv)") if filename: with open(filename, "w") as file: file.write(self.textEdit.toPlainText()) file.close() (有关详细信息,请参阅Redux API)将状态映射到mapStateToProps组件的道具。