[英]How do I pass an element's property to a function in React?
當我單擊已設置的onClick函數時,我想傳遞我的元素的屬性。 我不知道如何訪問元素的屬性。 具體來說,我想將Google Map Marker的position屬性傳遞給我的onClick函數,以便可以存儲單擊到數組中的標記的位置。
我的標記代碼如下所示:
<Marker position={{lat:"some value", lng:"some value"}
onClick{()=>markerClick(what do I pass here?)} clickable={true}}
我想傳遞position或position的lat和lng屬性。 如果我嘗試通過位置,則會收到錯誤消息,指出未定義位置。 緯度和經度只是給我未定義的值。
注意:position,clickable是Marker元素的本機屬性。
我認為在反應中,您應該將所有數據都存儲在狀態中,而不是通過參數傳遞數據。對於您的情況,請在狀態中創建一個位置obj,然后在合適的情況下進行更新(componentDidMount,componetWillMount等)。 當單擊“標記”時,您只需更改state.position即可,然后react將重新渲染UI。
編輯:您可以嘗試
<Marker
position={lat:"some value", lng:"some value"}
onClick={ this.handler }
clickable={ true }
/>
在this.handler中,您可以
this.handler = (event) => {
event.target.getAttribute('position');
}
event.target提供natvie DOM元素,並僅通過本機DOM獲取屬性https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
您可以將其添加到綁定到onClick的回調函數中。 像這樣(假設位置處於狀態,但可以是道具或硬編碼):
render() {
const { position } = this.state;
return (
<Marker position={position}
onClick={() => this.handleClick(position)} />
)
}
編輯:我剛剛讀了評論。 如果您有一組標記,則可以將位置分配給點擊處理程序,如下所示(假設您在從源頭接收位置時將其設置為狀態):
render() {
const { positions } = this.state;
const markers = positions.map((p, i) =>
<Marker key={i}
position={p}
onClick={() => this.handleClick(p)} />);
return (
<div>
{markers}
</div>
)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.