未捕获的TypeError:无法读取未定义的属性'concat'

时间:2019-01-04 08:59:11

标签: reactjs redux react-redux react-router

onDrop(picture) {
    this.setState({
        pictures: this.state.pictures.concat(picture),
    });
}

未捕获的TypeError:无法读取未定义的属性'concat'

1 个答案:

答案 0 :(得分:0)

您必须在构造函数中初始化值this.state.pictures。您只能在constructor内部直接设置状态,在任何其他情况下,请使用this.setState

  

如果您不初始化状态并且不绑定方法,则无需为React组件实现构造函数。

React组件的构造函数在挂载之前被调用。在为React.Component子类实现构造函数时,应在其他任何语句之前调用super(props)。否则,this.props将在构造函数中未定义,这可能会导致错误。

通常,在React中,构造函数仅用于两个目的:

通过将对象分配给this.state来初始化本地状态。 将事件处理程序方法绑定到实例。 您不应在构造函数()中调用setState()。相反,如果您的组件需要使用本地状态,请直接在构造函数中将初始状态分配给this.state:

constructor(props) {
    super(props);
    // Don't call this.setState() here!
    this.state = { counter: 0 };
    this.handleClick = this.handleClick.bind(this);
}

构造函数是唯一应直接分配this.state的地方。在所有其他方法中,您需要改用this.setState()。

https://reactjs.org/docs/react-component.html#constructor

constructor(props) {
   super(props)
   this.state.pictures = []
}