javascript - 访问另一个组件中的 props
问题描述
我试图通过单击页面文件中的标题来更改 Google Maps API 组件中的位置。无法弄清楚如何通过不同的文件访问组件。
尝试了不同的语法,“MapContainer.func”,MapContainer.props.func”。
联系页面。
import GoogleMaps from '../../../components/GoogleMaps';
import MapContainer from '../../../components/GoogleMaps';
const breadcumbMenu = [
{ name: 'Home', route: '/' },
{ name: 'Contact', },
]
function bkLocation() {
console.log('The bk link was clicked.');
}
function mhLocation() {
console.log('The mh link was clicked.');
//MapContainer.changeLoc(40.712637, -74.008116); <-- need to use changeLoc right here
}
function njLocation() {
console.log('The nj link was clicked.');
}
const ContactPage = () => {
return (.......
谷歌地图。
import React, { Component } from 'react'
import {Map, InfoWindow, Marker, GoogleApiWrapper} from 'google-maps-react';
import './style.scss'
const style = {
width: '70%',
height: '100%',
left: '14%'
}
export class MapContainer extends Component {
static defaultProps = {
center: {lat:40.585384,
lng:-73.951200 },
zoom: 11
};
state = {
center: {
lat: 40.7831,
lng: -73.9712
}
}
_changeLoc = (lt, ln) => {
this.setState({
center: {
lat: lt,
lng: ln
}
});};
render() {
return (
<Map
google={this.props.google}
style={style}
zoom={14}
initialCenter={{
lat:40.585384,
lng:-73.951200
}}
center={this.props.center}
>
<Marker onClick={this.onMarkerClick}
name={'Current location'} />
<InfoWindow onClose={this.onInfoWindowClose}>
</InfoWindow>
</Map>
);
}
}
export default GoogleApiWrapper({
apiKey: ("AIzaSyBfumfF_4j5uvjaITGn_VO_pb3O59uu-oE")
})(MapContainer)
我得到的错误是“changeLoc 不是函数/未定义”。当用户单击标题时,我需要更改地图 api 位置(控制台日志中有 3 个标题)。不知何故,我需要连接 changeLoc 函数并使其可从 ContactPage 文件调用。先感谢您!
解决方案
您可以通过以下方式实现此目的
将 _changeLoc 设为静态,然后您将能够按照您的定义调用 MapContainer._changeLoc
static _changeLoc = (lt, ln) => {
this.setState({
center: {
lat: lt,
lng: ln
}
});};
选项 2 是使用 redux 并将函数的引用添加到 redux 存储中
推荐阅读
- sql - 为权限设置数据库表的最佳方法
- c++ - 如何在事务中将两个文件写入磁盘
- sparql - 无法从本体中检索实例
- anaconda - 变量资源管理器扩展导致与 dill 包冲突
- javascript - 将对象附加到数组时使用扩展符号的正确方法?
- tensorflow - 用 tf.data 替换基于队列的输入管道
- python - 如何重新缩放图像坐标的信息以处理类似图像的缩放版本
- java - Springboot中的某些字段未在JSON中解析/反序列化
- .htaccess - 代理后面的 Wildfly 14 的 RewriteRule -> 404
- php - 如何使用参数调用函数以在codeigniter中强制下载