Как передать параметр при нажатие на кнопку в React?

140
18 декабря 2018, 11:10

Мне необходимо в localStorage создать объект в котором будут хранится закладки. Пытался найти какой нибудь гайд, решение ,пример как просто передать параметр при нажатии на кнопку. Попробовал пример из данного решения (https://learn-reactjs.ru/basics/handling-events) выдает ошибку.

Cannot read property 'updateMarker' of undefined

Функция обработчик onClick

updateMarker(key, value)  {
    console.log('кнопка нажата', key,value)
    // update react state
    this.setState({ [key]: value });
    // update localStorage
    localStorage.setItem(key, value);
}

Кнопка которая передает 2 параметра.

render() {
    return (
        <div>
        <ul className="list-group">
            {
                this.props.items.map(function(item) {
                    console.log(item)
                    return( <div  key={item}>
                        <li className="list-group-item" data-category={item}>{item}</li>
                        <button type="button" className="btn btn-dark"  onClick={e => this.updateMarker('newMarker', item)}>Закладки</button>
                    </div> );
                })
            }
        </ul>
        </div>
    );
}
Answer 1

Вы теряете ваш контекст в этом месте

this.props.items.map(function(item) {

Попробуйте так

this.props.items.map(item => {
Answer 2

Я бы посоветовал всё написать на es7

updateMarker = (key, value) => { ... }

render() {
  const { items } = this.props;
  return (
    <div>
      <ul className="list-group">
        {
          items.map((item) => { ... })
        }
      </ul>
    </div>
  );
}
READ ALSO
image src dataUrl некорректно работает jQuery.rotate.js

image src dataUrl некорректно работает jQuery.rotate.js

Всем привет! вот codePenЕсть картинка, src dataUrl

151
JavaScript heap out of memory

JavaScript heap out of memory

Имеется конфиг для webpack:

206
Разработка сайта на домене локально?

Разработка сайта на домене локально?

Постараюсь задать вопрос максимально понятно, так как не очень разбираюсь

197