Trouble with syntax for using the "tel:" protocol in a map method in React
9 replies
Last updated: May 7, 2021
E
Hey all, I'm having trouble figuring out the syntax needed for this. I need to use the <a href="tel:"> protocol to pull in the relevant numbers within a map method, so the code looks a bit like this:
This is pulling in data using GraphQL from Sanity.
{array.map((item) => { <a href="tel:{item.phone}">Call Person</a> })}
May 7, 2021, 1:17 PM
G
Hi User. Your map doesn’t have a return so perhaps that’s the issue you’re having. You could explicitly use the return keyword, change the inner
On a separate note, you could also use optional chaining (
If I’m on the wrong track, please let us know what trouble you’re having.
{ }to parentheses, or just bring the JSX line (
<a> … </a>) onto the same line as the
=>. Another potential problem would be if
item.phoneis not in a format that
tel:likes.
On a separate note, you could also use optional chaining (
item?.phone) to prevent a potential
item is not definederror.
If I’m on the wrong track, please let us know what trouble you’re having.
May 7, 2021, 1:49 PM
E
Thanks for responding User! In my actual code I do have a function setup for the page:
I was just trying to keep it simple. I know the {item.phone} part is definitely wrong, I just cant find how to properly reference it within the map to pull each number in turn. If that makes sense.
export default function Page({ data }) { const array = data.array.nodes; return ( {array.map((item) => { <a href="tel:{item.phone}">Call Person</a> })} ); }
May 7, 2021, 1:53 PM
M
Adding the “return” seems a good start. You can see the issue in these examples:
May 7, 2021, 2:14 PM
M
So you need the return or no braces.
May 7, 2021, 2:14 PM
M
Then to set the href you need to use something like href={“tel:” + item.phone} or href={
tel:${item.phone}}. Inside attributes you have to use a regular JavaScript expression of some sort.
May 7, 2021, 2:20 PM
M
Some docs here: https://reactjs.org/docs/introducing-jsx.html#specifying-attributes-with-jsx
And some good examples of using map here:
https://reactjs.org/docs/lists-and-keys.html
And some good examples of using map here:
https://reactjs.org/docs/lists-and-keys.html
May 7, 2021, 2:21 PM
M
Some docs here: https://reactjs.org/docs/introducing-jsx.html#specifying-attributes-with-jsx
And some good examples of using map here:
https://reactjs.org/docs/lists-and-keys.html
And some good examples of using map here:
https://reactjs.org/docs/lists-and-keys.html
May 7, 2021, 2:21 PM
G
Then to set the href you need to use something like href={“tel:” + item.phone} or href={I glossed right over that part. Yes, thank youtel:${item.phone}}.
user F
. 🙌May 7, 2021, 2:28 PM
E
Got it. Thanks User and User! I think that solves the question. I’ll try it out and ensure it works.
May 7, 2021, 3:20 PM
Sanity– build remarkable experiences at scale
Sanity is a modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.