目录
数据
拾取者工作所需的数据已经与图书馆完全脱钩. 这使得开发者可以灵活地更好地控制他们的应用程序捆绑大小,让他们选择如何和何时装入此数据. 数据可以是:
直接装入密码库
- 职业: Picker 即时制取, 数据可离线获取
- 计数 : 较慢的初始页面负载( 要装入的跳鼠文件)
yarn add @emoji-mart/data
import data from '@emoji-mart/data'
import { Picker } from 'emoji-mart'
new Picker({ data })
远程获取
- 职业: 仅在需要时获取数据,不会影响您的应用程序捆绑大小
- 计数 : 网络延迟, 无法脱机( 除非您配置服务工)
import { Picker } from 'emoji-mart'
new Picker({
data: async () => {
const response = await fetch(
'https://cdn.jsdelivr.net/npm/@emoji-mart/data',
)
return response.json()
}
})
在这个例子中,数据是从内容传输网络中获取的,但是如果您想要主机数据,也可以从自己的域中获取.
选取器
反应
npm install --save emoji-mart @emoji-mart/data @emoji-mart/react
import data from '@emoji-mart/data'
import Picker from '@emoji-mart/react'
function App() {
return (
<Picker data={data} onEmojiSelect={console.log} />
)
}
浏览器
<script src="https://cdn.jsdelivr.net/npm/emoji-mart@latest/dist/browser.js"></script>
<script>
const pickerOptions = { onEmojiSelect: console.log }
const picker = new EmojiMart.Picker(pickerOptions)
document.body.appendChild(picker)
</script>
选项/ 道具
| 选项 | 默认 | 选择 | 说明 |
|---|---|---|---|
| 数据 | {} | 用于拾取器的数据 | |
| i18n (英语) | {} | 用于拾取器的本地化数据 | |
| 类别 | [] | frequent, (中文(简体) ), people, (中文(简体) ), nature, (中文(简体) ), foods, (中文(简体) ), activity, (中文(简体) ), places, (中文(简体) ), objects, (中文(简体) ), symbols, (中文(简体) ), flags | 选取器要显示的类别 。 秩序受到尊重. |
| 自定义 | [] | 自定义emojis | |
| 在Emoji上选择 | null | 选择了 emoji 后召回 | |
| 在外边 | null | 在拾取器外点击时回击 | |
| 关于Add.Custom Emoji的报告 | null | 调用时 添加自定义的emoji 按钮。 只有提供回调时才会显示按钮 。 当搜索返回无结果时显示它 . | |
| 自动聚焦 | false | 拾取器是否应当自动聚焦搜索输入 | |
| 类别 | {} | 自定义类别图标 | |
| 动态窗口 | false | 采取器是否应该计算 perLine 动态基于 <em-emoji-picker>。启用时, perLine 被忽略 | |
| emoji按钮颜色 | [] | 即说. #f00, (中文(简体) ), pink, (中文(简体) ), rgba(155,223,88,.7) | 影响徘徊背景颜色的颜色阵列 |
| emoji按钮拉迪乌斯 | 100% | 即说. 6px, (中文(简体) ), 1em, (中文(简体) ), 100% | 情感按钮的半径 |
| emoji 按钮大小 | 36 | Emoji 按钮的大小 | |
| 电子化 | 24 | Emojis的大小( 在按钮内) | |
| emojiVersion 语录 | 14 | 1, (中文(简体) ), 2, (中文(简体) ), 3, (中文(简体) ), 4, (中文(简体) ), 5, (中文(简体) ), 11, (中文(简体) ), 12, (中文(简体) ), 12.1, (中文(简体) ), 13, (中文(简体) ), 13.1, (中文(简体) ), 14 | 要使用的emoji数据版本. 最新版本支持于 @emoji-mart/data 当前 页:1 |
| 除了爱莫吉斯 | [] | 将从拾取器中删除的 emoji ID 列表 | |
| 图标 | auto | auto, (中文(简体) ), outline, (中文(简体) ), solid | 用于拾取器的图标类型 . outline 带有轻主题和 solid 黑暗主题. |
| 语言 | en | en, (中文(简体) ), ar, (中文(简体) ), be, (中文(简体) ), cs, (中文(简体) ), de, (中文(简体) ), es, (中文(简体) ), fa, (中文(简体) ), fi, (中文(简体) ), fr, (中文(简体) ), hi, (中文(简体) ), it, (中文(简体) ), ja, (中文(简体) ), kr, (中文(简体) ), nl, (中文(简体) ), pl, (中文(简体) ), pt, (中文(简体) ), ru, (中文(简体) ), sa, (中文(简体) ), tr, (中文(简体) ), uk, (中文(简体) ), vi, (中文(简体) ), zh | 拾取器使用的地方 |
| 最大频率 | 4 | 显示的频率行数 . 0 将禁用频繁的分类 | |
| 导航 | top | top, (中文(简体) ), bottom, (中文(简体) ), none | 导航栏的位置 |
| 无国家标记 | false | 是否显示国家旗帜 。 如果不提供, tbhis 会被自动处理( Windows 不支持国家旗帜) | |
| 没有结果 Emoji | cry | 爱莫吉的ID 用于无结果的爱莫吉 | |
| 每行数 | 9 | 每行要显示的情感数量 | |
| 预览 Emoji | point_up | 在不徘徊任何emoji时用于预览的emoji的ID. point_up 当预览位置为下方时 point_down 当预览位置为上. | |
| 预览方案 | bottom | top, (中文(简体) ), bottom, (中文(简体) ), none | 预览的位置 |
| 搜索选项 | sticky | sticky, (中文(简体) ), static, (中文(简体) ), none | 搜索输入的位置 |
| 设定 | native | native, (中文(简体) ), apple, (中文(简体) ), facebook, (中文(简体) ), google, (中文(简体) ), twitter | 取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取用取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取用取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取取. native 作为表现最出色的人,其他人则依赖于图示表. |
| 皮肤 | 1 | 1, (中文(简体) ), 2, (中文(简体) ), 3, (中文(简体) ), 4, (中文(简体) ), 5, (中文(简体) ), 6 | 爱莫吉斯的皮肤色调 |
| 外观 | preview | preview, (中文(简体) ), search, (中文(简体) ), none | 皮肤色调选择器的位置 |
| 主题 | auto | auto, (中文(简体) ), light, (中文(简体) ), dark | 拾取器的颜色主题 |
| 获取 SpritesheetURL 数据 | null | 返回图示表的 URL 用于拾取器的函数 。 它应与所提供的数据相容. |
自定义emojis
您可以使用自定义的emojis,提供一系列分类及其emojis. Emojis还支持多张皮肤色素,可以是GIFs或SVGs.
import data from '@emoji-mart/data'
import Picker from '@emoji-mart/react'
const custom = [
{
id: 'github',
name: 'GitHub',
emojis: [
{
id: 'octocat',
name: 'Octocat',
keywords: ['github'],
skins: [{ src: './octocat.png' }],
},
{
id: 'shipit',
name: 'Squirrel',
keywords: ['github'],
skins: [
{ src: './shipit-1.png' }, { src: './shipit-2.png' }, { src: './shipit-3.png' },
{ src: './shipit-4.png' }, { src: './shipit-5.png' }, { src: './shipit-6.png' },
],
},
],
},
{
id: 'gifs',
name: 'GIFs',
emojis: [
{
id: 'party_parrot',
name: 'Party Parrot',
keywords: ['dance', 'dancing'],
skins: [{ src: './party_parrot.gif' }],
},
],
},
]
function App() {
return (
<Picker data={data} custom={custom} />
)
}
自定义类别图标
您可以使用自定义类别图标, 将类别名称作为密钥提供对象, 将图标作为值 。 目前支持的格式 svg 字符串和 src。见 实例。 。 。 .
const customCategoryIcons = {
categoryIcons: {
activity: {
svg: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M57.89 397.2c-6.262-8.616-16.02-13.19-25.92-13.19c-23.33 0-31.98 20.68-31.98 32.03c0 6.522 1.987 13.1 6.115 18.78l46.52 64C58.89 507.4 68.64 512 78.55 512c23.29 0 31.97-20.66 31.97-32.03c0-6.522-1.988-13.1-6.115-18.78L57.89 397.2zM496.1 352c-44.13 0-79.72 35.75-79.72 80s35.59 80 79.72 80s79.91-35.75 79.91-80S540.2 352 496.1 352zM640 99.38c0-13.61-4.133-27.34-12.72-39.2l-23.63-32.5c-13.44-18.5-33.77-27.68-54.12-27.68c-13.89 0-27.79 4.281-39.51 12.8L307.8 159.7C262.2 192.8 220.4 230.9 183.4 273.4c-24.22 27.88-59.18 63.99-103.5 99.63l56.34 77.52c53.79-35.39 99.15-55.3 127.1-67.27c51.88-22 101.3-49.87 146.9-82.1l202.3-146.7C630.5 140.4 640 120 640 99.38z"/></svg>',
},
people: {
src: './people.png',
},
},
}
Emoji组件
Emoji网络组件的用法无论您使用什么库都是一样的.
首先,您需要确保数据已经初始化 。 您只需每页装入一次即可 。 注意,如果你打电话 init 这样,你不一定需要将数据纳入你的道具中。 也没什么伤害.
import data from '@emoji-mart/data'
import { init } from 'emoji-mart'
init({ data })
然后可以使用您 HTML / JSX 中的 emoji 组件.
<em-emoji id="+1" size="2em"></em-emoji>
<em-emoji id="+1" skin="2"></em-emoji>
<em-emoji shortcodes=":+1::skin-tone-1:"></em-emoji>
<em-emoji shortcodes=":+1::skin-tone-2:"></em-emoji>
属性/ 道具
| 属性 | 示例 | 说明 |
|---|---|---|
| 编号 | +1 | 一个EmojiID |
| 短码 | :+1::skin-tone-2: | Emoji 短码 |
| 本地语言 | 👍 | 一个本土的情感 |
| 大小 | 2em | 内置元素大小 |
| 倒计时 | :shrug: | 无法找到 emoji 的字符串 |
| 设定 | native | Emoji套装: native, (中文(简体) ), apple, (中文(简体) ), facebook, (中文(简体) ), google, (中文(简体) ), twitter |
| 皮肤 | 1 | 爱莫吉皮肤语气: 1, (中文(简体) ), 2, (中文(简体) ), 3, (中文(简体) ), 4, (中文(简体) ), 5, (中文(简体) ), 6 |
无头搜索
你可以不用皮克来搜 就像爱莫吉一样, data 要使用搜索索引,需要先初始化.
import data from '@emoji-mart/data'
import { init, SearchIndex } from 'emoji-mart'
init({ data })
async function search(value) {
const emojis = await SearchIndex.search(value)
const results = emojis.map((emoji) => {
return emoji.skins[0].native
})
console.log(results)
}
search('christmas') // => ['🎄', '🇨🇽', '🧑🎄', '🔔', '🤶', '🎁', '☃️', '❄️', '🎅', '⛄']
从本地获取情感数据
可以从本地的emoji获得emoji数据. 如果你想从本地的emoji那里得到EmojiID,这个是有用的. 就像爱莫吉一样, data 需要先初始化以获取 emoji 数据 .
import data from '@emoji-mart/data'
import { init, getEmojiDataFromNative } from 'emoji-mart'
init({ data })
getEmojiDataFromNative('🤞🏿').then(console.log)
/* {
aliases: ['hand_with_index_and_middle_fingers_crossed'],
id: 'crossed_fingers',
keywords: ['hand', 'with', 'index', 'and', 'middle', 'good', 'lucky'],
name: 'Crossed Fingers',
native: '🤞🏿',
shortcodes: ':crossed_fingers::skin-tone-6:',
skin: 6,
unified: '1f91e-1f3ff',
} */
国际化
EmojiMart 用户界面支持 多种语言自由打开公关 如果你的失踪.
import i18n from '@emoji-mart/data/i18n/fr.json'
i18n.search_no_results_1 = 'Aucun emoji'
new Picker({ i18n })
由于文件小, 英语是内置的,不需要提供.
实例
QQ 为现代浏览器所建
EmojiMart 依赖于这些 API, 如果您需要支持旧浏览器, 您可能需要包含多填充 :
- 阴影DOM (单位:千美元)MDN 数据(中文(简体) )
- 自定义元素 (单位:千美元)MDN 数据(中文(简体) )
- 交叉观察员 (单位:千美元)MDN 数据(中文(简体) )
- 自动/等待 (单位:千美元)MDN 数据(中文(简体) )
发展
yarn install
yarn dev
