US president Donald Trump has described the London Bridge terror attack as “horrific” and vowed that “this bloodshed must end”.

Trump’s remarks, made during a Sunday night fund-raising event at Ford’s Theatre in Washington DC, were his first public comments on the atrocity in which seven people died.

Up to now, the president had expressed his views only on Twitter.

Earlier, Trump criticised London’s mayor Sadiq Khan after he sought to reassure people about a stepped-up police presence on city streets.

In a series of tweets, President Trump challenged Khan for saying there was “no reason to be alarmed”.

Trump also repeated calls for his stalled travel ban, took on gun control supporters and pledged that the United States would be there to help London.

Donald Trump's tweet criticising London Mayor Sadiq Khan

Donald Trump’s tweet criticising London Mayor Sadiq Khan

At the fund-raiser Trump said he would do whatever was necessary to protect the United States from a “vile enemy” that had waged war on innocents for too long.

“This bloodshed must end, this bloodshed will end,” he said, with his wife Melania beside him.

Trump made his comments at the conclusion of the event for Ford’s Theatre – the scene of one of the most famous acts of bloodshed in American history: the assassination of Abraham Lincoln.

“America sends our thoughts and prayers and our deepest sympathies to the victims of this evil slaughter and we renew our resolve, stronger than ever before, to protect the United States and its allies from a vile enemy that has waged war on innocent life, and it’s gone on too long,” Trump said.

“As president, I will do what is necessary to prevent this threat from spreading to our shores and work every single day to protect the safety and security of our country, our communities and our people.”

In the London attack, three men drove a van over London Bridge on Saturday and struck pedestrians before crashing the vehicle outside a pub.

The attackers, wielding blades and knives, ran to nearby Borough Market and stabbed people in several different restaurants.

Seven people were killed and at least 48 were taken to hospital.

Police fired 50 bullets to stop the violence, killing the three attackers and wounding one member of the public.