#reactjs #react-hooks #treemap #echarts
Вопрос:
Я внедрил «древовидную карту», используя диаграммы и реакцию. Вот мой код:
import React, {useState} from "react";
import ReactEcharts from "echarts-for-react";
import './App.css';
const data = {
"name": "node_1",
"children": [
{"name": "node_2"}
]
}
function App() {
const [style, setStyle] = useState({
height: "100%",
width: "100%"
});
const [options, setOptions] = useState({
tooltip: {
trigger: 'item',
triggerOn: 'mousemove'
},
series: [
{
type: 'tree',
data: [data],
top: '1%',
left: '7%',
bottom: '1%',
right: '20%',
symbolSize: 10,
label: {
position: 'left',
verticalAlign: 'middle',
align: 'right',
fontSize: 12
},
lineStyle: {
width: 1.5,
curveness: 0.3,
color: '#cc0000',
opacity: .5
},
leaves: {
label: {
position: 'right',
verticalAlign: 'middle',
align: 'left'
}
},
emphasis: {
focus: 'descendant'
},
expandAndCollapse: true,
animationDuration: 550,
animationDurationUpdate: 750
}
]
});
const [content, setContent] = useState({
name: "node_1",
});
const changeContent = (params) => {
// setContent({
// name: params.name
// });
console.log(params.name)
};
const onEvents = {
"click": changeContent
};
return (
<div>
<ReactEcharts option={options} style={style} classNamr="tree" onEvents={onEvents} />
</div>
);
}
export default App;
Древовидная карта имеет два уровня (двухуровневая древовидная карта).
С помощью этого onEvent
метода фиксируется событие щелчка и changeContent
вызывается функция. Эта функция выводит «имя» переданного аргумента «параметры». Поэтому, если щелкнуть по узлу древовидной карты, будет напечатано имя узла. Это прекрасно работает!
Теперь моя проблема:
Как только я определю такое состояние, как это
const [content, setContent] = useState({
name: "node_1",
});
и вызовите setContent
метод внутри changeContent
функции,
const changeContent = (params) => {
setContent({
name: params.name
});
};
затем древовидная карта по-прежнему запускает события щелчка, но больше не складывается/не расширяется.
Что я здесь делаю не так? Как решить эту проблему?