【发布时间】:2019-04-01 18:59:37
【问题描述】:
我是从最佳实践的角度提出这个问题 - 我在这里找到的答案是针对单个代码库的更具体的问题。如果它已经被回答,我很高兴被指出正确的方向,或者如果我正在尝试的不是好的做法,我很高兴能以另一种方式展示 - 我可能误解了一些概念......
我正在学习 React,并正在使用它构建一个简单的应用程序。 主要是为了保持我的代码整洁,我创建了两个文件。 第一个文件 - 我从我的组件内部访问一个 API,并从我的组件状态呈现一些数据。 第二个文件 - 我想在我的第一个文件中使用来自组件状态的相同信息,并将其用作我的第二个文件中的道具。
下面是一个简化的例子。
第一个文件:
import React, { Component } from 'react';
import SecondComponent from './SecondComponent';
function DisplayFirstData (props) {
return (
{props.data}
}
class FirstComponent extends Component {
constructor(props) {
super(props);
this.state = {
myData: something,
}
}
render() {
<DisplayFirstData data={this.state.myData} />
}
}
第二部分:
import React, { Component } from 'react';
function DisplaySecondData (props) {
return (
{props.data}
}
class SecondComponent extends Component {
constructor(props) {
super(props);
this.state = {
// State object from the first component file
}
}
render() {
<DisplaySecondData data={this.state.myData} />
}
}
【问题讨论】:
-
Redux 就是答案。 redux.js.org
-
为什么你有两个叫
App的组件? -
一种常见的技术是 lift state up to the first common ancestor 两个组件,并将其作为道具传递给两者。
-
@Tholle - 谢谢,这听起来合乎逻辑且易于维护,我会调查一下
-
首先,由于
<DisplayFirstData />和<DisplaySecondData />做的事情完全一样,我建议你把它们放在一个文件中并命名为<DisplayData />。每当您需要它时,只需将其导入您的firstfile.js或secondfile.js
标签: javascript reactjs