reactjs - 如何更改 if 代码中的状态?我写了这些代码
问题描述
我怎样才能使用这样的东西
$(window).resize(function() {
if ($(window).width() < 768) {
this.setState({slidesToShow:1})
}else if ($(window).width() < 992) {
this.setState({slidesToShow:2})
}else {
this.setState({slidesToShow:3})
}
});
但是当我调整页面大小时,状态不会改变,当它改变时,它会
未捕获的 TypeError:this.setState 不是函数
解决方案
你需要addEventListener
在窗口中componentDidMount
,
componentDidMount(){
window.addEventListener('resize', this.resize);
}
您的调整大小功能应该是,
resize = () => {
console.log(window.innerWidth);
if (window.innerWidth < 768) {
this.setState({slidesToShow:1})
}else if (window.innerWidth < 992) {
this.setState({slidesToShow:2})
}else {
this.setState({slidesToShow:3})
}
}
注意:确保在组件卸载时移除事件监听器,
componentWillUnmount(){
window.removeEventListener('resize', this.resize);
}
推荐阅读
- sql - 使用索引连接临时表
- azure-api-management - 无法使用 Azure API 管理液体模板解析肥皂响应
- angular - 添加新的角度组件 npm 安装和导入的步骤是什么?
- python - 餐厅菜单和收据的最佳解决方案
- wpf - 对话框出现在其他窗口后面
- json - Postgres 通过复制脚本导出不喜欢导入时带引号的 json
- powerpoint - 在 Powerpoint 视图中替换字体不会替换字体
- node.js - Microsoft Graph API 委托权限 - 访问令牌 NodeJs
- protractor - Protractor & Angular 8:在 Angular 应用程序运行之前设置 localStorage?
- javascript - 在数组中查找对象,以查找 id 匹配子字符串的对象