【发布时间】:2019-01-04 08:54:38
【问题描述】:
在我的 reactjs 项目中,组件被渲染了两次。如果我删除 componentDidMount,问题就解决了。但我在我的项目中需要它。我尝试了网上的解决方案,但我不能。
App.js
export default class App extends Component {
constructor(props) {
super(props);
this.state = {
users: []
};
}
componentDidMount() {
fetch("https://reqres.in/api/users?page=2")
.then(res => res.json())
.then(result => {
this.setState({
users: result.data
});
});
}
render() {
return (
<BrowserRouter>
<Switch>
<Route exact path="/" render={() => <Home />} />
</Switch>
</BrowserRouter>
);
}
}
Home.js
export default class Home extends Component {
render() {
console.log("Render");
return (
<div>
<h1>console.log render twice</h1>
</div>
);
}
}
https://codesandbox.io/s/wyjk931z6l
console.log 在 Home.js 上工作两次。
【问题讨论】:
-
会渲染两次,有什么问题吗?这就是 api 调用的工作原理
-
请解释为什么您认为被多次渲染的组件在某种程度上是不好的。因为这就是 React(或任何其他使用屏幕的软件)的工作方式。
标签: javascript reactjs react-router