Javascript 为什么每次操作后都要安装React组件?
我有一个名为Javascript 为什么每次操作后都要安装React组件?,javascript,reactjs,redux,Javascript,Reactjs,Redux,我有一个名为Home的React组件,它在组件挂载时调用一个操作来获取一些组 我呼吁采取以下行动: componentDidMount() { const { fetchRecentGroups } = this.props; fetchRecentGroups(); } switch(action.type) { case REQUEST_GROUPS: return { ...state, loadSt
Home
的React组件,它在组件挂载时调用一个操作来获取一些组
我呼吁采取以下行动:
componentDidMount() {
const { fetchRecentGroups } = this.props;
fetchRecentGroups();
}
switch(action.type) {
case REQUEST_GROUPS:
return {
...state,
loadState: FETCHING
};
case REQUEST_GROUPS_SUCCESS:
return {
...state,
loadState: SUCCESS,
groups: action.data.groups,
totalResults: action.data.totalResults
};
default:
return state;
}
const mapStateToProps = (state) => {
return {}
}
const mapDispatchToProps = (dispatch) => {
return {
fetchRecentGroups: () => {
dispatch(actions.fetchRecentGroups())
}
}
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(Home);
我的减速机正在完美地拾取每个动作,并返回如下状态:
componentDidMount() {
const { fetchRecentGroups } = this.props;
fetchRecentGroups();
}
switch(action.type) {
case REQUEST_GROUPS:
return {
...state,
loadState: FETCHING
};
case REQUEST_GROUPS_SUCCESS:
return {
...state,
loadState: SUCCESS,
groups: action.data.groups,
totalResults: action.data.totalResults
};
default:
return state;
}
const mapStateToProps = (state) => {
return {}
}
const mapDispatchToProps = (dispatch) => {
return {
fetchRecentGroups: () => {
dispatch(actions.fetchRecentGroups())
}
}
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(Home);
我还在该组件上使用connect
HOC,如下所示:
componentDidMount() {
const { fetchRecentGroups } = this.props;
fetchRecentGroups();
}
switch(action.type) {
case REQUEST_GROUPS:
return {
...state,
loadState: FETCHING
};
case REQUEST_GROUPS_SUCCESS:
return {
...state,
loadState: SUCCESS,
groups: action.data.groups,
totalResults: action.data.totalResults
};
default:
return state;
}
const mapStateToProps = (state) => {
return {}
}
const mapDispatchToProps = (dispatch) => {
return {
fetchRecentGroups: () => {
dispatch(actions.fetchRecentGroups())
}
}
}
export default connect(
mapStateToProps,
mapDispatchToProps
)(Home);
Home
组件放置在路线中,如下所示:
<Route
exact={true}
path="/"
component={Home}
/>
我把它改成:
return <Router>{RouteBlock()}</Router>
返回{RouteBlock()}
每次渲染组件时,都会立即调用设置新状态的函数,并触发组件的重新渲染。也许您应该使用shouldComponentUpdate生命周期方法来检查您的旧状态是否与新状态相同
查看官方文档:您是否介意发布所有Home类?我猜组件树上有一些SFC会重新引发该操作,因此整个子树都会失效,需要创建一个新的Home组件实例,从而反复触发相同的过程。