Javascript Redux连接的react应用程序-如何在副作用完成之前渲染它?

Javascript Redux连接的react应用程序-如何在副作用完成之前渲染它?,javascript,reactjs,redux,react-redux,Javascript,Reactjs,Redux,React Redux,反应16.3 Redux 3.7.2 在componentDidMount中,我通过一个副作用AJAX调用一个填充道具mapDispatchToProps的操作 我的问题是,它重用了redux中的旧道具-首先渲染,然后在更新通过mapDispatchToProps到达后重新渲染 我不想让这个子组件记住它的状态或道具-我需要它每次都是一张白板 文档中指出,组件在卸载时被销毁,但情况似乎并非如此,因为当您转到此页面或在页面上重新加载时,状态会有所不同 因为重新加载时没有数据,所以页面必须等待副作用完

反应16.3 Redux 3.7.2

在componentDidMount中,我通过一个副作用AJAX调用一个填充道具mapDispatchToProps的操作

我的问题是,它重用了redux中的旧道具-首先渲染,然后在更新通过mapDispatchToProps到达后重新渲染

我不想让这个子组件记住它的状态或道具-我需要它每次都是一张白板

文档中指出,组件在卸载时被销毁,但情况似乎并非如此,因为当您转到此页面或在页面上重新加载时,状态会有所不同

因为重新加载时没有数据,所以页面必须等待副作用完成


不幸的是,我无法向您提供代码示例-但是任何接触过这种奇怪行为的人都应该认识到我的描述….

您的组件可能正在使用旧状态重新呈现,因为这是您存储在redux中的状态,并且正在传递给组件

您可以做的是在componentWillUnmount中触发一个redux操作,该操作会破坏该状态

例如伪伪代码:

减速器:

const initialState = { counter: 0 };

const myReducer = (state = initialState, action) => {
  switch(action.type) {
    case 'DO_SOMETHING':
      return {
        ...state,
        counter: state.counter + 1
      };

    case 'CLEAN_STATE':
      return initialState;
  }
}
组成部分:

class MyComponent extends React.Component {
  render () {
    return (
      <div>
        <span>{this.props.counter}</span>
        <button onClick={triggerActionThatCausesDO_SOMETHING} />
      </div>
    );
  }

  componentWillUnmount () {
    triggerActionThatCausesCLEAN_STATE();
  }
}

没有任何代码参考,很难了解您的问题?你能试着分享尽可能少的代码吗?@pranaytripath这个问题实际上很容易理解,没有代码示例。谢谢!我试试看。是的,那就是解决办法!谢谢=