IDONTSUDO
@IDONTSUDO
ЧСВ программистов идет в комплекте с первой IDE.

React OnClick fun is udefined?

У меня есть вот такой State. И мне приходится, его рендерить через map и Object.keys.

5dcac11da7332378637165.png

<button onClick={this.handleClick} >Удалить</button> //отлично работает
                {manageList.map((manage, i) =>( 
                    <>
                     <div>
                    {Object.keys(manage.UserBy).map(function(key) {
                  
                      if(key == "id"){
                        return  <button onClick={this.handleClick} >Удалить</button>  //не работает
                      }
                      return <> <div>{manage.UserBy[key]} {manage.price}%</div> </>
                      })}
                     </div>
                    </>))}

//функция 
handleClick(){
    console.log(200)
}


Ошибка которая у меня выходит.
TypeError: Cannot read property 'handleClick' of undefined

В чем может быть проблема?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
@dimoff66
Кратко о себе: Я есть
Object.keys(manage.UserBy).map(function(key) {

замените на стрелочную функцию, так как у обычных функций свой this, от личный от контекста, в котором они вызываются, потому и не работает.

Object.keys(manage.UserBy).map(key => {

PS Но по хорошему весь кусок я бы переписал так:

{Object.entries(manage.UserBy).map(([key, value]) => 
  key == "id" 
   ? <button onClick={this.handleClick} >Удалить</button>  
   : <div>{`${value} ${manage.price}%`}</div> 
)}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы