我有一個地圖應用程序,我建立了一個按鈕按下後需要一些地圖圖標出現/消失,但我無法弄清楚如何設置它來重新渲染組件,當我從它傳入一個新的運動屬性父母組件:爲什麼我的反應組件不更新狀態更新?
家長負載組件:
<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