我有一个地图应用程序,我建立了一个按钮按下后需要一些地图图标出现/消失,但我无法弄清楚如何设置它来重新渲染组件,当我从它传入一个新的运动属性父母组件:为什么我的反应组件不更新状态更新?
家长负载组件:
<SimpleMap sports=[default value and future values go here] />
简单的地图组件(简体):
constructor(props) {
(props);
this.state = {
events: [{venue: {lat: 2, lon: 1}}],
sports: ["baseball", "football", "paddle", "soccer", "boxing", "dart", "biking", "golf", "hockey", "inline-skating", "tennis", "volleyball", "skateboard", "kickball", "bowling", "pool", "ride", "hike", "ice-skating"]
};
};
componentWillReceiveProps (nextProps) {
this.setState({events: [{venue: {lat: 2, lon: 1}}],
sports: nextProps.sports});
console.log(nextProps.sports);
}
static defaultProps = {
center: {lat: 36.160338, lng: -86.778780},
zoom: 12,
sports: ["baseball", "football", "paddle", "soccer", "boxing", "dart", "biking", "golf", "hockey", "inline-skating", "tennis", "volleyball", "skateboard", "kickball", "bowling", "pool", "ride", "hike", "ice-skating"],
};
makeMapEvents (insertProps) {
fetch("./json/meetup.json").then((response) => {
return response.json()
}).then((response) => {
/* eventually returns new events object based on insertProps */
this.setState({events: response});
}
};
componentDidMount() {
this.makeMapEvents(this.state.sports);
console.log("mounted", this.state.sports);
}
最终结束了在这里的状态映射事件:
<GoogleMap>
{this.state.events.map((result) => {
return (<Marker key={counter++} lat={result.venue.lat} lng={result.venue.lon}
sport={this.props.sport} data={result}/>);
})}
</GoogleMap>
如果定义了'counter'变量?另外,你几乎从不使用索引值作为React中的'key'属性。始终为每个循环渲染的组件使用唯一的标识符,否则,当项目被删除或重新排序时,您可能会遇到奇怪的行为。 –
它在其他地方定义。我简化了它。这只是一个数字。谢谢你的提示。 – deek