reactjs - Emoji Mart React, hur man väljer Emoji?
Så jag använder det här biblioteket för emojis som heter emoji-mart.
Jag kan visa emojisarna men jag kan inte välja dem.
Jag har skapat denna EmojiPicker-komponent som bibliotekets dokumentation säger
import React, { useEffect, useRef } from "react"
import data from "@emoji-mart/data"
import { Picker, PickerProps } from "emoji-mart"
const EmojiPicker = (props: PickerProps | Readonly<PickerProps> | any) => {
const ref = useRef() as React.MutableRefObject<HTMLInputElement>
useEffect(() => {
new Picker({ ...props, data, ref })
}, [props])
return <div ref={ref} />
}
export default EmojiPicker
och jag kallar denna komponent så här
<div ref={ref} className="emoji-picker">
<EmojiPicker onSelect={handleOnSelect} />
</div>
Detta är gränssnittet för biblioteket
export interface PickerProps {
/** NOTE: default is not preventable */
onClick?(emoji: EmojiData, e: React.MouseEvent<HTMLElement>): void;
onSelect?(emoji: EmojiData): void;
onSkinChange?(skin: EmojiSkin): void;
perLine?: number | undefined;
emojiSize?: number | undefined;
i18n?: PartialI18n | undefined;
style?: React.CSSProperties | undefined;
title?: string | undefined;
theme?: 'auto' | 'light' | 'dark' | undefined;
emoji?: string | undefined;
color?: string | undefined;
set?: EmojiSet | undefined;
skin?: EmojiSkin | undefined;
defaultSkin?: EmojiSkin | undefined;
native?: boolean | undefined;
backgroundImageFn?: BackgroundImageFn | undefined;
sheetSize?: EmojiSheetSize | undefined;
emojisToShowFilter?(emoji: EmojiData): boolean;
showPreview?: boolean | undefined;
showSkinTones?: boolean | undefined;
emojiTooltip?: boolean | undefined;
include?: CategoryName[] | undefined;
exclude?: CategoryName[] | undefined;
recent?: string[] | undefined;
autoFocus?: boolean | undefined;
/** NOTE: custom emoji are copied into a singleton object on every new mount */
custom?: CustomEmoji[] | undefined;
skinEmoji?: string | undefined;
notFound?(): React.Component;
notFoundEmoji?: string | undefined;
icons?: CustomIcons | undefined;
enableFrequentEmojiSort?: boolean | undefined;
useButton?: boolean | undefined;
}
Några idéer? . ps(Jag använder TypeScript)
Svar #1
Försök att använda onEmojiSelect istället för onSelect. Det verkar som att den kopierade gränssnittet inte är det du behöver.
I readme-exemplet (https://github.com/missive/emoji-mart) är det onEmojiSelect och det fungerar för mig.