【发布时间】:2021-07-16 08:51:03
【问题描述】:
我是 reactjs 的新手。我有一个带有按钮列表的父组件和带有地图的子组件。通过单击按钮,我想将坐标传递给子组件,但我一直在尝试更新地图组件内的数据。
具有按钮单击事件的父组件更新状态并将该状态传递给 Map 组件。
class Parent extends React.Component {
constructor(props) {
super(props);
this.state = {
data: [],
};
this.handleClick = this.handleClick.bind(this);
}
handleClick(data){
this.setState({data: data});
}
render() {
return(
<div>
<div>
<ul>
{list.map( data => (
<li key={}>
<button
type="button"
onClick={() => this.handleClick(data)} >
</button>
</li>
))}
</ul>
</div>
<div>
<Map data={this.state.data} />
</div>
</div>
)
}
}
具有 MapComponent 函数的子地图组件不会从更新状态中获取数据。
class Map extends React.Component {
constructor(props) {
super(props);
this.state={
data: []
};
}
componentDidMount() {
this.setState({data: this.props.data});
}
render() {
return (
<MapContainer zoom={6}>
<MapComponent data={this.state.data} />
</MapContainer>
);
}
}
function MapComponent(data) {
console.log(data);
return null;
}
【问题讨论】:
-
可以将componentDidMount改为componentDidUpdate,然后检查状态是否发生变化。
-
我的问题是,为什么需要在父组件(Parent)和子组件(Map)中保持相同的状态?
Map组件可以变为无状态,并且当Parent重新呈现时,将始终具有data的最新值 [就像在这种情况下,由于按钮的单击处理程序触发的状态更改,即 @ 987654326@].
标签: reactjs