reactjs - D3.js data() 键绑定
问题描述
这是我第一次使用D3.js
在 React 应用程序中构建条形图。我的组件非常简单:它获取数据并绘制条形图。我想向我的酒吧添加键,但是当我尝试在data()
功能中执行此操作时,它失败了=> entry.item
对象的类型为“未知”。TS2571
...
svg
.selectAll(".bar")
.data( data, entry => entry.item )
.join("rect")
...
我data
的是这种类型:
export interface DataFormat {
item: string;
region: string;
data: number;
}
我不明白我做错了什么,因为data()
显示的类型定义:
data<NewDatum>(data: NewDatum[], key?: ValueFn<GElement | PElement, Datum | NewDatum, string>): Selection<GElement, NewDatum, PElement, PDatum>;
UPD:这是如何data
定义的
export interface ChartProps {
data: DataFormat[];
}
export const Chart = (props:ChartProps) => {
const { data } = props;
并在父组件中作为道具传递:
export const Wrapper = () => {
const [currentYear, setCurrentYear] = useState<number>(INITIAL_YEAR);
const [dataMax, setDataMax] = useState<number>(0);
const [data, setData] = useState<DataFormat[]>(initialData);
useEffect(() => {
if( currentYear <= FINAL_YEAR ) {
setTimeout(() => setCurrentYear(currentYear+1), 200);
}
}, [currentYear]);
useEffect(() => {
const data: DataFormat[] = populationData.data
.map((dataitem) => {
return {
item: dataitem.item,
data: dataitem.data[currentYear],
region: dataitem.region,
image: dataitem.image,
};
})
.sort((a, b) => b.data - a.data)
.slice(0, TOP);
setData(data);
setDataMax(Math.max(...data.map((item) => item.data)));
}, [currentYear]);
return (
<Chart data={data} />
);
};
解决方案
推荐阅读
- openid-connect - signinSilent 不起作用(openID Connect)
- javascript - TypeError:无法读取未定义的属性“groupsUrl”
- c++ - 未定义符号:operator << ( Xcode , subject Template);
- r - 如何检查字符向量是否包含字符串
- react-native - TextInput 事件 onContentSizeChange 未触发
- json - Flutter:复杂的 json 序列化。解析 json 字符串以提供给 UI
- python - GradientTape 根据是否被 tf.function 修饰的损失函数给出不同的梯度
- python - 低通滤波器从熊猫数据帧中获取数据的二阶导数
- c# - Xamarin 在同一解决方案中运行来自其他项目的活动
- amazon-web-services - Amazon CloudWatch Insights 查询