'How do I change Component Attribute on onClick in React?
I want to change the lat and lng props on onClick but can't seem to find a way to target them, how do I do this?
const randomLocation = () => {
// Here is where I want to target {lat} and {lng}
Map.lat = 12.12312; //Example of what I mean
};
const App = () => {
return (
<div className="App">
<header className="App-header">
<Map lat={56.048095} lng={12.702583} />
<div className="m-auto">
<button
onClick={randomLocation} // this is the onClick event
className="inline-flex fixed bottom-16 left-[10rem] items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-[#2EC1EF] hover:bg-indigo-700 transition-all"
>
Teleport Me Somewhere Random
</button>
<button className="inline-flex fixed bottom-16 right-[10rem] items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-[#9A2EEF] hover:bg-indigo-700 transition-all">
Take Me Home
</button>
</div>
</header>
</div>
);
};
Solution 1:[1]
I think you'll want to create a variable for the lat and lng that's saved in state. Then onClick, you can set state.
const App = () => {
state = { mapLat: 56.048095 }
const randomLocation = () => {
this.setState({ mapLat: 12.12312 })
};
return (
<>
<Map lat={mapLat} lng={12.702583} />
<button
onClick={randomLocation} // this is the onClick event
>
Teleport Me Somewhere Random
</button>
</>
);
};
With useState hook:
const App = () => {
const [mapLat, setMapLat] = React.useState(56.048095);
const randomLocation = () => {
setMapLat(12.12312)
};
return (
<>
<Map lat={mapLat} lng={12.702583} />
<button
onClick={randomLocation} // this is the onClick event
>
Teleport Me Somewhere Random
</button>
</>
);
};
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Nicole Latifi |
