【发布时间】:2020-05-04 11:35:48
【问题描述】:
我正在开发一个 React 应用程序,其中图形组件使用从父组件传递的道具获取和显示数据。问题是父级也进行了一些数据获取,并且更新父级状态(尽管不会影响子级道具)似乎会重新渲染子级,从而在子级中启动重复数据获取。
请参阅https://jsfiddle.net/ctombaugh/cgzn7wst/10/ 及以下代码。
function App(props) {
const [year, setYear] = React.useState(2019);
const [list, setList] = React.useState([]);
React.useEffect(() => {
alert("App is fetching some lists");
setList(["a", "b", "c"]);
}, [setList]);
function handleYearChange(e) {
setYear(e.target.value);
}
return (<div>
<YearSelector value={year} onChange={handleYearChange}></YearSelector>
<Plot year={year}></Plot>
</div>);
}
function YearSelector(props) {
return <select value={props.value} onChange={e => props.onChange(e)} >
<option value="2019">2019</option>
<option value="2018">2018</option>
</select>
}
function Plot(props) {
const [data, setData] = React.useState([]);
React.useEffect(() => {
alert("Plot is fetching data for " + props.year);
setData([1, 2, 3]);
}, [props]);
return <div>I'm a plot</div>;
}
ReactDOM.render(<App/>, document.getElementById("container"));
【问题讨论】:
-
查看memoization。
标签: javascript reactjs react-hooks