Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么每次操作后都要安装React组件?_Javascript_Reactjs_Redux - Fatal编程技术网

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组件实例,从而反复触发相同的过程。