javascript - React Router - 呈现 <Redirect> 而不是子列表组件

标签 javascript reactjs react-router

我有以下代码:

import { Redirect } from 'react-router-dom';
import QPContent from '../QPContent';

class AnswerContainer extends Component {
  constructor(props) {
    super(props);
    this.state = {
      redirect: false
    };
  }

  render() {
    const { redirect } = this.state;
    if (redirect) {
      return <Redirect push to={'/question/'+this.props.qID}/>;
    }

    return (
      <div className="qp-answer-container">
        ....
      </div>
    );
  }
}

const mapDispatchToProps = (dispatch, ownprops) => ({
....
});

const mapStateToProps = (state) => ({
....
});

export default connect(mapStateToProps, mapDispatchToProps)(AnswerContainer);`

我有一个 AnswerContainer 的数组父组件中的组件。我目前在路线 /question/qId .我正在尝试刷新有关设置 redirect: true 的页面.所以当我使用 setState()并将列表中只有一个组件的状态更改为 redirect: true ,父组件不会重新渲染。相反,子组件消失了。为什么会发生这种情况以及如何在 <Redirect/> 上触发整个页面的重新呈现?

注意:我正在调用 setState()在 Action 中 dispatch

最佳答案

如果你真的想重新渲染整个页面,只需使用 window.location.reload() .

<Redirect />的想法component 是更新当前的url,而不是重新渲染组件。当然,它们通常会重新呈现,因为最常见的是当 url 更改时您会显示其他内容。但是 React 的工作是尽可能少地重新渲染。

关于javascript - React Router - 呈现 <Redirect> 而不是子列表组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46659647/

相关文章:

reactjs - 部署新的 Webpack 包会导致错误,直到页面刷新

caching - React Router 代码拆分 "randomly"加载 block 失败

javascript - 使用 Javascript 打印外部 HTML 文件

javascript - parsley.js 可选地验证数字输入

javascript - 无法在物理 iOS 设备 (9.3) 上启动 react-native

javascript - 如何使用 React JS 导出多个类组件?

javascript - 失败的 Prop 类型 : Invalid prop `component` of type `object` supplied to `Route` , 预期 `function`

基于先前选择的 Javascript 选择框

javascript - Mootools 成功、失败和提交代码

javascript - 使用 React 时,当某些字段为空时,表单不会提交