#javascript #reactjs #highcharts
Вопрос:
Я создал облако слов, ссылающееся на эту демонстрацию. https://codesandbox.io/s/yz3t3
Теперь моя проблема в том, как сделать ссылку на каждое слово, созданное облаком слов highcharts, как на этой странице. https://ftmscan.com/topstat#Token
При переключении любого текста в word cloud на этом сайте вы будете перенаправлены на другую страницу. Как сделать такую ссылку на каждый текст — вот о чем я спрашиваю.
Я изо всех сил пытался сделать это в течение нескольких дней, но, похоже, нигде нет ответа. Любая помощь будет признательна и заранее благодарна.
Ответ №1:
Вы можете использовать в series.point.events.click
качестве обратного вызова, в который будет включена логика. Вот базовый код, с которого вы можете начать:
point: {
events: {
click() {
const point = this;
console.log(point);
if (point.name === "Aenean") {
window.open("https://www.highcharts.com/");
}
if (point.name === "Lorem") {
window.open("https://www.highcharts.com/");
}
}
}
}
Вы можете легко улучшить его для своих нужд — вы можете использовать переключатель внутри этого обратного вызова или написать функцию, которая определит, в какой точке будет открываться конкретная ссылка.
Демо: https://codesandbox.io/s/highcharts-react-demo-forked-2idvg?file=/demo.jsx:1187-1564
Ответ №2:
https://api.highcharts.com/highcharts/series.wordcloud.events.click
Сделайте серию кликабельной, а затем проверьте событие щелчка для получения подробной информации о том, что именно было нажато.
event.point, по-видимому, содержит наиболее актуальную информацию. У него есть идентификатор, имя, категория и т. Д. Вы должны иметь возможность использовать часть этой информации, чтобы найти, на какое слово было нажато.
Рабочий пример:
const options = {
series: [
{
type: "wordcloud",
data: data,
events: {
click: e => {
alert(e.point.name);
/* Do stuff here, based on e.point.name */
}
}
}
]
};
Комментарии:
1. Спасибо за быстрый ответ, Эмиль. Я попробовал с events.click, как вы упомянули, и получил название щелкнутого слова, например «Лорем щелкнул». Теперь проблема заключается в том, как включить информацию о ссылках в каждые данные. Я прокомментировал каждую ссылку для данных в коде. Я сделал тестовый код здесь . Не могли бы вы любезно сообщить мне, как включить информацию о ссылках для каждой серии данных?
2. Как сказал Себастьян Ведцель в своем ответе: сделайте заявление о переключении. В качестве альтернативы, структурируйте свои данные следующим образом: const your_data = {«Lorem»: » example.com «, «Ipsum»: » test.com «} и просто найдите ссылку через your_data[e.point.name]