javascript - 不同父组件之间共享子组件不渲染?
问题描述
我有 2 个组件(/Dashboard 和 /WeeklyDashboard),它们有一个公共子组件(/Linegraph)。即使我将新道具从父组件传递给子组件,当路由发生变化时,它也不会使用提供的新数据进行更新。有没有办法解决这个问题。我尝试使用 componentDidUpdate 但是,它只会被调用当页面重新加载而不是当路由改变时
应用程序.js
render() {
return (
<div className="Main">
<div className="SearchGroup">
<div>
<SearchBar />
<NavBar />
<div>
</div>
</div>
</div>
<Switch>
<Route path="/" component={() => <Dashboard WeatherDetails={this.state.ResponseDetails} WeatherDetails2={this.state.ResponseDetails1} WeatherDetails3={this.state.ResponseDetails2} />} exact />
<Route path="/Weekly" component={() => <WeeklyDashboard/>} exact />
</Switch>
</div>
仪表板.js
const HourlyTemp=this.props.WeatherDetails3;
return (
<div className="Graph">
<LineGraph HourlyTemp={HourlyTemp}/>
</div>
);
LineGraph.js
import React from "react";
class LineGraph extends React.Component {
constructor(props) {
super(props);
this.state = {};
}
componentDidUpdate(prevProps) {
alert("hi");
}
render() {
console.log(this.props);
for (var key in this.props.HourlyTemp) {
if (key < 16) {
var toStr = convert(this.props.HourlyTemp[key].dt).toString();
var temp = {
name: toStr,
Temperature: this.props.HourlyTemp[key].temp,
};
data1.push(temp);
}
}
return (
<div>
<LineChart
width={800}
height={400}
data={data1}
margin={{
top: 5,
right: 30,
left: 20,
bottom: 5,
}}
>
<CartesianGrid strokeDasharray="0 0" />
<XAxis dataKey="name" />
<YAxis />
<Tooltip />
<Legend />
<Line
type="monotone"
dataKey="Temperature"
stroke="orange"
activeDot={{ r: 8 }}
/>
<Line type="monotone" dataKey="Temperature" stroke="orange" />
</LineChart>
</div>
);
}
}
export default LineGraph;
每周仪表板
function WeeklyDashboard(props) {
var a = [1, 2, 3, 4, 5, 6, 7];
return (
<div style={{ margin: "auto", width: "80%" }}>
<div className="WeeklyContainer">
{a.map(function (x, key) {
return (
<div>
<Weekly key={key} />
</div>
);
})}
</div>
<div style={{ margin: "auto", width: "fit-content" }}>
<LineGraph key={"ss"} HourlyTemp={"ss"} />
</div>
</div>
);
}
export default WeeklyDashboard;
解决方案
推荐阅读
- python - Python: Json string to csv via Pandas --> ValueError: Mixing dicts with non-Series可能会导致排序不明确
- javascript - 如何异步使用 chrome.cookies.getAll?
- java - 独立迭代时,无序哈希映射中的键和值是否对齐?
- c# - 如何在不导致无限循环的情况下将数据添加到 XML 文件
- r - ZIP - 隐马尔可夫模型 r Stan
- python - wxPython 的 wx.grid.Grid() 不会完全进入视野
- python - 将列表中的日期与数据框中的日期范围进行比较
- python - Pygame - 更有效地从 spritesheet 中 blit 一个 sprite,或 blit 单个 sprite 到它们自己的表面?
- windows - 从基于统一的程序中抓取文本
- php - 在 Woocommerce 中显示链接到随机产品的自定义按钮