@Nivaech

Как через пропс передавать часть названия функции?

Есть несколько кнопок, с помощью которых можно поделиться ссылкой в соц.сетях. Объект с данными для них выглядит так:
const socialData = {
  facebook: {
    icon: <FacebookIcon />,
    share: url => {
      window.FB.ui({
        method: 'share',
        href: url,
      });
    },
  },
  messenger: {
    icon: <ChatIcon />,
    share: url => {
      window.FB.ui({
        method: 'send',
        link: url,
      });
    },
  },
};

В каждом объекте есть соответствующий метод для функции на клик. Я хочу чтобы функция была одна, но имела в себе пропс, который бы указывал, какой именно метод должен сейчас сработать.
Вот так выглядит компонент кнопки. Он должен принимать в себя параметр url, которым пользователь будет делиться, и такой себе проп method, который должен дать функции понять, метод в каком именно объекте должен вызваться.
export const SocialButtonShare = ({method, url}) => {
    const { facebook, twitter, email, messenger } = socialData;
    return (
        <IconButton onClick={() => method.share(url)}>{method.icon}</IconButton>
    )
}

Как написать рабочий вариант подобного? То есть, если prop method="facebook", на клик должен сработать метод facebook.share(), и иконка должна быть соответственно facebook.icon.
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
socialData[method].share();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы