【发布时间】:2020-04-07 05:00:14
【问题描述】:
我对某些行为感到困惑,想知道是否有人可以提供帮助。我有一个 React 组件,它根据通过 props 传入的过滤器来获取电影数据。使用 console.log 我可以看到我的 componentDidMount() 只被调用一次,但每次组件由于接收不同的道具而重新渲染时,只在 componentDidMount() 中设置的状态变量会发生变化。我的代码很长,所以我不想全部发布,但如果需要我可以发布。引起我困惑的sn-p如下:
class MoviesList extends React.Component {
constructor(props) {
super(props);
this.state = {
filterList : [], filter: {}
};
}
async componentDidMount() {
console.log("shouldOnlyCallOnce");
if( this.props.filter.on) {
if (this.props.filter.type == "title"){
try {
const url = "mycustomapi.com/api/"+this.props.filter.title;
const response = await fetch(url);
const jsonData = await response.json();
jsonData.sort((a, b) => a.title.localeCompare(b.title));
console.log("??");
this.setState({filterList: jsonData, filter: this.props.filter});
}
catch (error) {
console.error(error);
}
}
尽管 state.filter 仅在整个组件中设置,但每次重新加载我的组件时它都会更改。有谁知道如果没有多次控制台记录会发生这种情况?
【问题讨论】:
-
除了这个问题,我的 componentDidUpdate(prevProps){} prevProps 总是和我现在的 props 一样。
标签: javascript reactjs