【发布时间】:2019-08-08 19:02:47
【问题描述】:
我有一个组件,我想从其中将数据传递给另一个组件,并且我使用 react-router-dom 进行路由。
class App extends Component {
constructor(props) {
super(props);
this.state = {
devices: [],
data_set: []
}
}
render() {
return (
<Provider store={store}>
<Fragment>
<BrowserRouter>
<Switch>
<Route
exact
path="/"
component={Dashboard} />
<Route
exact
path="/rehab"
render={(props) =>
<Rehab {...props}
data_val={this.state.data_set}
text="Shyam Form" />
}
/>
<Route
exact
path="/activity"
render={(props) =>
<Activity {...props}
data_val={this.state.data_set}
text="Shyam Activity" />
}
/>
</Switch>
</BrowserRouter>
</Fragment>
</Provider>
)
}
}
const wrapper = document.getElementById("app");
ReactDOM.render( < App / > , wrapper)
`
这是我的 App.js。我需要访问我在康复组件内的活动组件中拥有的状态变量。
我知道将“windows.entity”用作全局存储,但我认为这不是一个好习惯。
任何帮助表示赞赏。在此先感谢
【问题讨论】:
-
我不清楚问题是什么。为什么不能只传递道具?不相关,但我发现你的很多 JSX 都很难阅读。
-
您可以使用 React.context 之类的东西将组件层次结构包装到共享上下文中 (reactjs.org/docs/context.html)
-
如果你有两个兄弟组件,一种典型的数据共享解决方案是将状态放入两个兄弟组件之上的组件中。您可以将一个函数传递给其中一个用于设置父级的状态,另一个可以从父级接收值。
-
只用道具?
-
兄弟组件通过父组件通信的小例子:codesandbox.io/s/mz1yonj468