2016-02-21 2 views
1

Я хотел бы вызвать метод updateCurrentThread OnClick, но я получаю следующее сообщение об ошибке:Реагировать вызов метод компонента из вложенной функции в визуализации метод

Uncaught TypeError: Cannot read property 'updateCurrentThread' of undefined

updateCurrentThread: function(thread) { 
    this.setState({ 
    currentThread: thread 
}).bind(this); 
}, 


render: function() { 
    var threads = this.state.data.map(function (thread) { 
    var boundClick = this.updateCurrentThread.bind(this, i); 
    let time = getThreadDate(thread.timestamp); 
    return (
     <div className="row thread" key={thread.threadID}> 
     <ThreadParticipants onClick={boundClick} key={i} className="small-2 small-centered columns" ids={thread.participantIDs}/> 
     </div> 
); 
}) 
+0

Это относится к области функций функции, которая является первым параметром 'map'. Используйте 'thread => {}' вместо 'function() {}' – walkerrandophsmith

+0

Заглядывая в него ... :) – walkerrandophsmith

+0

Вот мой весь файл реакции: http://pastebin.com/Qs1uGiRk – wklm

ответ

5

this внутри функции контекстные к а не компонент. Если вы можете использовать функции стрелок ES6, которые лексически ограничены, тогда ваш текущий подход будет работать. Перед функциями стрелки люди сохраняли бы компонент this в переменной (например, var self = this), а затем self.updateCurrentThread.

+0

Большое спасибо за вашу помощь, это исправлено :) – wklm

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