arrays - ReactJS 未捕获类型错误 : Cannot read property 'concat' of undefined

标签 arrays reactjs

我想在每次按下提交按钮时将一个元素添加到状态中。问题是,每次我按下提交按钮,它都会返回

Uncaught TypeError: Cannot read property 'concat' of undefined 错误,我无法弄清楚为什么它是未定义的。

class ChatRoom extends React.Component{
  constructor(props){
    super(props);
    this.state = {
      rooms: ['room1', 'room2'],
      chatRoom: ''
    }
  }

  handleAddRoom = (e) => {
    console.log('handleAddRoom', e);
    this.setState({
      rooms: this.state.notes.concat(e)
    })
  }
  handleSubmit(){
    var newRoom = ReactDOM.findDOMNode(this.refs.room).value;
    console.log(newRoom);
    ReactDOM.findDOMNode(this.refs.room).value = '';
    this.handleAddRoom(newRoom);
  }
  render(){
    console.log("rooms: ", this.state.rooms)
    return(
      <div>
        Hello from chat room!! Please enter new room:

        <input type="text" className="form-control" placeholder="Add a new note" ref="room" />
        <span className="input-group-btn">
          <button className="btn btn-default" type="button" onClick={this.handleSubmit.bind(this)}>Submit</button>
        </span>
      </div>
    )
  }
}

这是给我带来问题的组件。我将 console log 放在不同的位置,它们都返回了正确的值。不知何故,当它试图连接 JS 时,它说它是 undefined 值。如何将元素连接到 rooms 状态?

最佳答案

这一行:

房间:this.state.notes.concat(e)

您还没有在任何地方定义 notes,因此它说它不能对 undefined 执行 concat

关于arrays - ReactJS 未捕获类型错误 : Cannot read property 'concat' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42520601/

相关文章:

c - 未指定两个边界的二维数组

reactjs - 如何在不安装 material-ui 的情况下安装 Material-UI Docs?

reactjs - 尝试在 vs code 中将 emmet 与 React 应用程序一起使用

javascript - 如何制作一些 HTML 单词的数组?

c - 以方程式作为用户在 c 中的输入

c - 在 C 中查找短数组的所有可能子集

javascript - React Context 和 Provider 数据未按预期传递

reactjs - npm install react-native-paper 期间出现问题

javascript - 从文本框获取文本 react js

java - 使用 Java 将字符串数组写入文件 - 单独的行