【发布时间】:2018-03-07 15:43:26
【问题描述】:
我有两个组件 SideNav 和 Dashboard(两个在不同的 js 文件中)。 SideNav 将选择框作为过滤器。我必须将一个数组从仪表板组件传递到侧边栏组件。该数组必须作为选择框的值(位于 sidenav 组件内)。
P.S. 如果我在两个不同的 JS 文件中定义了两个不同的组件类会怎样。 例如HomeComponent/Home.js -> 父组件 Dashboard/Dashboard.js -> 子组件 我正在对“Home.js”文件进行 API 调用并获取一些数据。我想将这些数据传递给“Dashboard.js”文件(组件) 我研究的所有示例,它们在同一个 JS 文件中显示了两个组件。
class Dashboard extends Component {
constructor(props) {
super(props);
this.state = {viz:{},filterData:{}};
}
var data1= ['1','2','3'];
this.setState({data1: data1}, function () {
console.log(this.state.data1);
});
}
//Sidebar
class Sidebar extends Component {
constructor(props) {
super(props);
this.state = {
data: ['opt1','opt2']
};
}
handleClick(e) {
e.preventDefault();
e.target.parentElement.classList.toggle('open');
this.setState({data: this.state.data1}, function () {
console.log(this.state.data);
});
}
render() {
const props = this.props;
const handleClick = this.handleClick;
return (
<div className="sidebar">
<nav className="sidebar-nav">
<Nav>
<li className="nav-item nav-dropdown">
<p className="nav-link nav-dropdown-toggle" onClick={handleClick.bind(this)}>Global</p>
<ul className="nav-dropdown-items">
<li> Organization <br/>
<select className="form-control">
<option value="">Select </option>
{this.state.data.map(function (option,key) {
return <option key={key}>{option}</option>;
})}
</select>
【问题讨论】:
-
你能分享一些代码吗?
-
更好的方法是提升状态,然后将其作为道具传递给两个组件
-
Shubham Khatri:提升国家?你能解释清楚吗
-
我已经编辑了这个问题。我必须从仪表板组件传递 data1 的值,并在侧边栏组件中更新 data 的值。在实际场景中,只有在仪表板加载后,我才会获得 data1 的值
-
拥有状态管理器可能会帮助你解决这个问题,试试 redux redux.js.org
标签: reactjs components