Reputation: 45
Im making div element in for-loop and want to assign every div to link to /campaign page with his id.
I want on div click to go to "/campaign/id" page and pass id to Campaign component.
class Home extends Component{
...
async printCampaigns(){
const totalSupply = 5
const mainDiv = document.getElementById("myID")
for(var i = 0;i<totalSupply;i++){
const _div = document.createElement('div')
_div.onclick = function() {
//I want this onclick to go to ("/campaign/" + _div.id)
}
mainDiv.appendChild(_div)
}
}
...
}
This is my Router code
const Routing = () => {
return(
<Router>
<Header/>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/campaign/:id" component={Campaign} />
</Switch>
</Router>
)
}
ReactDOM.render(<Routing />, document.getElementById('root'));
This class to open on /campaign/id and to have access to that id
class Campaign extends Component{
}
Upvotes: 1
Views: 62
Reputation: 366
you can use setAttribute function for set _div id and window.location.href for onClick event Like this :
async printCampaigns(){
const totalSupply = 5
const mainDiv = document.getElementById("myID")
for(var i = 0;i<totalSupply;i++){
const _div = document.createElement('div');
_div.setAttribute("id", i);
_div.onclick = function() {
window.location.href="/campaign/"+ i;
}
mainDiv.appendChild(_div)
}
}
Upvotes: 2