javascript - 为什么 setState 不触发重新渲染?

标签 javascript reactjs routes

我正在尝试触发重新渲染以排除我的页眉和页脚。

当我记录页面时,它首先触发 render > componentDidMount > render,所以我假设页面确实更新了正确的值,但它仍然显示页眉/页脚。

constructor() {
    super();
    this.state = {
      header: true,
      footer: true,
    };
  }
  componentDidMount() {
    if (window.location.pathname === '/404-page') {
      this.setState({ header: false, footer: false });
    } else if (window.location.pathname === '/form') {
      this.setState({ header: true, footer: false });
    } else if (window.location.pathname.length > 6) {
      this.setState({ header: true, footer: false });
    }
  }
 render() {
    {header ? <Header /> : null}
 }

结果将是页眉/页脚不再存在。

最佳答案

首先,您必须从state 中解构属性header。然后显式返回

 render() {
    const {header} = this.state
    return header ? <Header /> : null
 }

关于javascript - 为什么 setState 不触发重新渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57626241/

相关文章:

javascript - 如何将多个内容依次显示为跑马灯?第二个内容应该需要一些时间来显示

python - 来自其他文件的 flask 路由器

ruby-on-rails - rails 3 命名空间 Controller 和路由

javascript - 动态添加跨度标记到字符串的第一个单词

javascript - React JS 在 FileReader 内发生事件后不会改变状态

asp.net-mvc - ActionResult 参数始终为 null

javascript - jQuery 自动调整下拉菜单宽度

javascript - 在 JavaScript 中添加迄今为止的月份

javascript - Mongoose 回调挂起 Node js

javascript - React Semantic UI - 在下拉菜单中添加选项键