【问题标题】:Displaying emojis programmatically in JSX (Gatbsy)在 JS (Gatsby) 中以编程方式显示表情符号
【发布时间】:2021-10-06 01:44:08
【问题描述】:

我有以下 JSX 代码:

import * as React from 'react'

const CheeseIcons = ({ milk }) => {
  const milkoji = {
    Cow:'1F42E',
    Goat: '1F410'
  }

  const icon = "&#x" + milkoji.[milk] + ";";
  return (
    <main>
      <p>{icon}</p>
      <p>&#x1F42E;</p>
    </main>
  )
}

export default CheeseIcons

我将Cow 正确传递为{milk} - 但在第一段中显示文本&amp;#x1F42E;,而在第二段中显示表情符号????显示出来。

如何让表情符号显示在第一段中?

【问题讨论】:

    标签: javascript jsx emoji


    【解决方案1】:

    经过重新考虑,这个问题不是一个明显的重复,因为它专门处理只能使用代理对以 UTF-16 编码的表情符号,这使得来自链接问题的答案不合适。

    因此你会这样做:

    const CheeseIcons = ({ milk }) => {
      const milkoji = {
        Cow: 0x1F42E, // Attention
        Goat: 0x1F410
      }
    
      return (
        <main>
          <p>{String.fromCodePoint(milkoji[milk])}</p>
        </main>
      )
    }
    

    请注意,我们使用 String.fromCodePoint 而不是 String.fromCharCode,因为上面的值是代码点(但不是编码这些表情符号的有效 UTF-16 字节)。

    【讨论】:

    • 效果很好,非常感谢。这将如何与更复杂的表情符号(例如标志)一起使用两个 CharCode 来工作?
    • fromCodePoint (developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…) 接受多个代码点。您可以在对象中为每个表情符号存储一个数组,然后将其传播到 fromCodePoint (fromCodePoint(...milkoji[milk])。请注意,字符代码与代码点非常不同。
    猜你喜欢
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 2019-05-12
    • 2018-04-08
    • 2018-01-09
    • 1970-01-01
    相关资源
    最近更新 更多