2017-06-18 33 views
0

我在整个代码中只有一个this.setState调用,这是在构造函数中,但我得到setState错误。为什么我不能在组件的构造函数中设置状态?

我它降低到下面的代码为清楚起见:

import React, { Component } from 'react'; 

class App extends Component { 
    constructor() { 
    super(); 
    this.setState({ 
     hello: 'nothing' 
    }); 
    } 

    render() { 
    return (
     <div></div> 
    ); 
    } 
} 

export default App; 

的误差如下: Image

proxyConsole.js:56警告:setState(...):只能更新一安装或安装部件。这通常意味着您在未安装的组件上调用了setState()。这是一个没有操作。请检查App组件的代码。

为什么会发生这种情况,我该如何在构造函数中设置状态?

回答

3

当您在构建组件时设置初始状态时,请直接设置this.state,请勿使用this.setStatesetState只能在组件已被安装时使用,并且在构造器中组件有而不是已被安装 - 因此直接设置状态。每the React documentation

constructor()

constructor(props)

安装之前它的阵营组件构造函数被调用。 [...]

构造函数是初始化状态的正确位置。如果您没有初始化状态并且没有绑定方法,则不需要为您的React组件实现构造函数。

constructor() { 
    super(); 
    this.state = { 
    hello: 'nothing' 
    }; 
} 

the React documentation

您可分配this.state是构造函数的唯一地方。

+0

这可能是我曾经犯过的最愚蠢的错误。对不起,我已经回复了一段时间,但谢谢。如果有人遇到这个问题,我会留下来。 – amingilani

相关问题