我正在使用recharts
,如果data
变量在类之外,它可以正常工作。发生的情况是它加载、动画图形并显示“点”坐标。但是,如果data
变量在类内部,它不会动画,也不会更新“点”坐标 css。
注意渲染方法中注释掉的数据,如果我取消注释,并注释掉顶部数据变量,它不起作用,但这个当前设置工作得很好。任何修复的想法?我最终想加载this.props.data
而不是data
一旦修复。
const data = [{ name: '07/14/2017', mood: 6 }, { name: '07/15/2018', mood: 7 }];
class LinearGraph extends Component {
constructor(props) {
super(props);
}
render() {
//const data = [{ name: '07/14/2017', mood: 6 }, { name: '07/15/2018', mood: 7 }];
return (
<ResponsiveContainer width="100%" height="80%">
<LineChart
data={data}
margin={{ top: 5, right: 50, left: 0, bottom: 5 }}
>
<XAxis dataKey="name" />
<YAxis />
<CartesianGrid
strokeDasharray="3 3"
horizontal={false}
/>
<Tooltip />
<Legend />
<Line
type="monotone"
dataKey="mood"
stroke="rgba(43, 191, 217, 0.9)"
dot={{ stroke: '#ff0000', strokeWidth: 12 }} // this isn't working at all
activeDot={{ r: 1 }}
strokeWidth={5}
/>
<ReferenceLine y={7} label="Max" stroke="green" strokeDasharray="3 3" />
</LineChart>
</ResponsiveContainer>
);
}
}
也为了更直观的理解,在这张照片中它是它工作的时候(不能显示动画,但你可以看到“点”坐标正在工作):
编辑:我也尝试在 componentWillMount (和 componentDidMount 但后者给出警告)中设置状态:
class LinearGraph extends Component {
constructor(props) {
super(props);
this.state = {
data: [],
};
}
componentWillMount() {
this.setState({ data: this.props.data });
}
render() {
return (
<ResponsiveContainer width="100%" height="80%">
<LineChart data={this.state.data} />
</ResponsiveContainer>
);
}
}