Tôi có ứng dụng bản đồ mà tôi đã tạo yêu cầu một số biểu tượng bản đồ xuất hiện/biến mất sau khi nhấn nút, nhưng tôi không thể tìm cách đặt lại thành phần khi tôi chuyển vào thuộc tính thể thao mới cha mẹ thành phần:Tại sao thành phần phản ứng của tôi không cập nhật với các cập nhật trạng thái?
Chánh tải phần:
<SimpleMap sports=[default value and future values go here] />
Simple thành phần bản đồ (giản thể):
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);
}
Cuối cùng kết thúc ở đây để lập bản đồ các sự kiện từ nhà nước:
<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>
đâu biến 'counter' được xác định? Ngoài ra, bạn sẽ không bao giờ sử dụng giá trị chỉ mục làm thuộc tính 'khóa' trong React. Luôn sử dụng số nhận dạng duy nhất cho mỗi thành phần được kết xuất vòng lặp, nếu không, bạn có thể gặp phải các hành vi kỳ lạ khi các mục bị xóa hoặc sắp xếp lại. –
Được xác định ở nơi khác. Tôi đã đơn giản hóa nó. Nó chỉ là một con số. Cảm ơn vì tiền hỗ trợ. – deek