Reactjs 组件将不会安装';不要设置状态

Reactjs 组件将不会安装';不要设置状态,reactjs,Reactjs,这不起作用的原因: class Slider extends React.Component { constructor(props){ super(props); this.state = { top : 0, responsiveImg : "" }; } componentWillMount(){ const bodyWidth = window.in

这不起作用的原因:

class Slider extends React.Component {
    constructor(props){
        super(props);

        this.state = {
            top : 0,
            responsiveImg : ""
        };
    }

    componentWillMount(){
        const bodyWidth = window.innerWidth;
        const responsiveSliderImg = "responsiveSliderImg";

        if((bodyWidth >= 415) && (bodyWidth < 473)){
            this.setState({responsiveImg: responsiveSliderImg});
            console.log("The state is : " + this.state.responsiveImg);
        }
    }
}
类滑块扩展React.Component{
建造师(道具){
超级(道具);
此.state={
排名:0,
答复:“
};
}
组件willmount(){
const bodyWidth=window.innerWidth;
const responsiveSliderImg=“responsiveSliderImg”;
如果((车身宽度>=415)和&(车身宽度<473)){
this.setState({responsiveImg:responsiveSliderImg});
log(“状态为:“+this.state.responsiveImg”);
}
}
}
我试图在componentWillMount函数中向状态添加类名,但它不起作用。在控制台日志中,我得到状态为:,因此状态为空


有什么想法吗?

状态不会同步更新。从

setState()不会立即改变this.state,但会创建 等待状态转换。调用此命令后访问this.state 方法可能返回现有值

尝试检查渲染方法中的状态

了解哪些生命周期方法可以在不重新渲染的情况下调用setState也很好。在某些情况下可能会有所帮助。我用它作为快速参考。单击“生命周期”过滤器查看非常有用的表参考


作为一件有趣的事。我开发了一个实用程序库来帮助处理与您类似的响应性用例。它为组件提供其容器大小,允许您执行响应性渲染逻辑。这对你有帮助吗?请检查。

不是立即更新状态。如果需要获取新状态,可以将回调作为第二个参数传递给


我不介意,你可以接受另一个答案。最好选择最符合您需求的答案。选择一个问题的答案是很好的。
this.setState({responsiveImg: responsiveSliderImg}, function () {
 // get new state here
});