2016-09-10 3 views
1

Перемещение некоторого кода из response.createclass в расширение Компонент i столкнулся с проблемой. В то время как отображение компонента i имеет функцию, передаваемую как свойство, поэтому к ней можно получить доступ из этого компонента. Он работал найти «предыдущий путь», но теперь он выбрасывает эту ошибку: Uncaught TypeError: Не удается прочитать свойство «removeComment» undefinedReact не может прочитать свойство undefined

Первоначально я думал, что это просто требуется привязка, но со следующим кодом я до сих пор получаю сообщение об ошибке: (NB: он не только комментарий компонента - подобный код в CommentForm работает как намеченная)

all(value, index) { 
    return <Comment author={value.author} key={index} removeComment={this.removeComment.bind(this)} >{value.comment}</Comment> 
    } 
    render() { 
     return(
     <div> 
      {this.state.items.map(this.all)} 
      <CommentForm getNewComment = {this.getNewComment.bind(this)} /> 
     </div> 
    ); 
    } 

Я также попытался его связывания в методе конструктора

Благодаря

ответ

0
all(value, index) { 
    return <Comment author={value.author} key={index} removeComment={this.removeComment.bind(this)} >{value.comment}</Comment> 
    } 
    render() { 
     return(
     <div> 
      {this.state.items.map(this.all.bind(this))} 
      <CommentForm getNewComment = {this.getNewComment.bind(this)} /> 
     </div> 
    ); 
    } 

Когда вы запускаете карту, вам необходимо привязать обработчик, поскольку карта запускает обработчик в некоторой другой области видимости, и он изменит контекст this.

Смежные вопросы