Twenty people have been killed and 26 injured in a mass shooting in the Texas city of El Paso.
Governor Greg Abbott described it as “one of the most deadly days in the history of Texas”.
The massacre happened at a Walmart store near the Cielo Vista Mall, a few miles from the US-Mexican border.
A 21-year-old man is in custody. Police said the suspect was a resident of the Dallas-area city of Allen, about 650 miles (1,046km) east of El Paso.
He has been named by US media as Patrick Crusius.
CCTV images said to be of the gunman and broadcast on US media show a man in a dark T-shirt wearing ear protectors and brandishing an assault-style rifle.
US President Donald Trump described the attack as “an act of cowardice”.
“I know that I stand with everyone in this country to condemn today’s hateful act. There are no reasons or excuses that will ever justify killing innocent people”, he wrote on Twitter.
The victims of the attack have not yet been named. However, Mexico’s President Manuel Lopez Obrador said three Mexicans were among those killed, Reuters news agency reports.
The attack came less than a week after a teenage gunman killed three people at a California food festival. The Texas shooting has been dubbed the eighth deadliest in modern US history.
“We as a state unite in support of these victims and their family members,” Mr Abbott said.
“We must do one thing today, one thing tomorrow and each and every day after this – we must unite.”
The police and FBI are investigating whether an anonymous white nationalist “manifesto”, shared on an online forum, was written by the gunman. The document says the attack was targeted at the local Hispanic community.
El Paso Police Chief Greg Allen said reports of an active shooter were received at 1039 local time (1639 GMT), and law enforcement officers were on the scene within six minutes.
Walmart was full of shoppers buying back-to-school supplies at the time of the attack.
The 21-year-old is the only suspect in custody over the attack, and police say no officers fired their weapons while arresting him.
Mr Allen said the ages of victims were “numerous” as he described the situation as “horrific”.
El Paso Police Department had earlier tweeted that blood donations were “needed urgently”.
Blood needed urgently. Multiple injured transported to various hospitals. Blood donation centers Vitalent Blood Services at 424 s Mesa Hills and 133 N Zaragoza
— EL PASO POLICE DEPT (@EPPOLICE) August 3, 2019
Kianna Long said she was at the Walmart with her husband when they heard gunfire.
“People were panicking and running, saying that there was a shooter,” Ms Long told Reuters news agency. “They were running close to the floor, people were dropping on the floor.”
Ms Long said she and her husband ran through a stock room before taking cover with other customers.
Another witness, Glendon Oakly, told CNN that he was in a sporting goods store inside the nearby shopping mall when a child ran inside “telling us there’s an active shooter at Walmart”.
Mr Oakly said no-one took the child’s claim seriously, but just minutes later he heard two gunshots.
“I just thought about getting the kids out of the way,” he said.
The latest mass shooting in the United States has led to an outpouring of sympathy, but also led to fresh calls for gun control.
Walmart tweeted that it was “in shock over the tragic events” and was “working closely with law enforcement”.
We're in shock over the tragic events at Cielo Vista Mall in El Paso, where store 2201 & club 6502 are located. We’re praying for the victims, the community & our associates, as well as the first responders. We’re working closely with law enforcement & will update as appropriate.
— Walmart (@Walmart) August 3, 2019
Democratic presidential candidate Beto O’Rourke abandoned a campaign event in Las Vegas to return to his home town.
Earlier, he spoke at a labour forum, telling the crowd the shooting shattered any illusion that gun reform will “come of its own accord” in the US.
“We know that there’s a lot of injury, a lot of suffering in El Paso right now,” he said.
Other Democratic presidential candidates also responded to the shooting with calls for gun control.
New Jersey Senator Cory Booker was among them, saying the US seems to be “accepting the idea that these [shootings] are going to be a regular occurrence”.
Texas Attorney General Ken Paxton, however, said gun control would probably not have stopped the attack.
He added that if a “crazy” gunman launched such an attack, there was no way that law enforcement officers could be there to stop it.
“The best way is to be prepared to defend yourself,” he told CBS News.