javascript - 为什么 setState 不会触发重新渲染?
问题描述
我正在尝试触发重新渲染以排除我的页眉和页脚。
当我记录页面时,它首先触发渲染 > componentDidMount > 渲染,所以我会假设页面确实更新了正确的值,但它仍然显示页眉/页脚。
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}
}
结果将是页眉/页脚不再存在。
解决方案
首先,您必须header
从state
. 然后明确return
render() {
const {header} = this.state
return header ? <Header /> : null
}
推荐阅读
- maven - 构建助手 Maven 插件不删除整个正则表达式
- vue.js - 我应该在 gitignore 中为 nodejs/vuejs 应用程序添加 app.js 文件吗?
- php - 使用带有开始日期和结束日期 PHP 的输入插入表
- c - C 编程,stm32 uint64_t 变量不起作用
- sql-server - 导入时来自 SQL Azure 的 BACPAC 错误
- r - 正确地在 Shiny 中渲染,只有多个绘图中的 1 个渲染
- swift - 以速度移动精灵以跟随手指
- c++ - 将对象推回 std::vector
- ios - 数据库无法加载 WatermelonDB react-native
- arrays - 允许重复的完美和问题