我如何在 JSX 中声明一个变量?

How do I declare a variable in JSX?

我有以下从 Apollo Server 后端获取数据的代码。数据采用以下格式:

{ name: 'geodude', url: 'https://pokeapi.co/api/v2/pokemon/74/' },
{ name: 'graveler', url: 'https://pokeapi.co/api/v2/pokemon/75/' },

为了显示图像,我拆分了这个 url 字符串并在最后得到 id,如 74 或 75。但是我如何在 JSX 中拆分它,因为它不允许我声明任何变量.

return (
    <div className="App">
      {data.pokemonList.map((data) => (
         let a = data.url.split(/) // this gets the id from my url
         const b = "https://raw/${a}.png";    //use it in the string like this

但显然我不能在 JSX 中这样做。此外,我不能在 return 之外执行此操作,因为我必须像这样拆分所有映射值。有更简单的方法吗?

当然你可以在 JSX 中做到这一点——你可以将它们全部放在一个表达式中,例如:

{data.pokemonList.map((data) =>
  <img src={
    `https://raw/${data.url.match(/\d+(?=\/$)/)[0]}.png`
  }>
)}

或者创建一个块,允许你声明变量,然后return JSX 在最后:

{data.pokemonList.map((data) => {
  const num = data.url.match(/\d+(?=\/$)/)[0];
  const url = `https://raw/${num}.png`
  return <img src={src}>;
})}

请注意,您需要反引号才能使用 ${}(不是 ")插入到字符串中,并且您当前的 a 会给您一个数组,而不是字符串,因此插入${a} 不行。你需要从 URL.

中提取你想要的字符串