ddimonn8080
@ddimonn8080

Как правильно привязать this плюс дополнительные параметри к обработчику клика в React?

Здравствуйте, есть компонент
ProductSingle.js

import React, {Component} from 'react';
import {Link} from 'react-router-dom';
import ProductPrices from './ProductPrices';
import ReactHtmlParser from 'react-html-parser';
import history from '../../helpers/history';

class ProductSingle extends Component {

    constructor(props){
        super(props);

        this.postSelectedHandler = this.postSelectedHandler.bind(this, id);
    }

    postSelectedHandler(id, e){
        e.preventDefault();
        
        console.log( 'id', id );
        console.log( 'e', e );
    }

    render(){

        const {image, title, excerpt, descrtitle, descrtext, regular_price, sale_price, discount, currency, id, matchPath} = this.props;

        return (
            <div className="good__item">
                <div className="good__itemInner">
                    <div className="good__itemContent">
                        <div className="good__itemHeader">
                            <img className="good__itemImage" src={image} data-id={id} alt=""/>
                        </div>

                        <div className="good__itemTitle">{ReactHtmlParser(title)}</div>

                        <div className="good__itemExcerpt">{ReactHtmlParser(excerpt)}</div>

                        <div className="good__itemDescr">
                            <a
                                href={`${matchPath}/${id}`}
                                className="good__itemDescrTitle"
                                onClick={this.postSelectedHandler}
                            >
                                {ReactHtmlParser(descrtitle)}
                            </a>
                        </div>

                        <ProductPrices regular_price={regular_price} sale_price={sale_price} currency={currency} />
                    </div>
                </div>
            </div>
        );
    }
}

export default ProductSingle;

В нем есть ссылка
<a
    href={`${matchPath}/${id}`}
    className="good__itemDescrTitle"
    onClick={this.postSelectedHandler}
>

Обработчик
postSelectedHandler(id, e){
        e.preventDefault();
        
        console.log( 'id', id );
        console.log( 'e', e );
    }

Привязываю this в конструкторе руководствуясь guideline

почему id undefined? Как правильно привязать через конструктор дополнительный параметр?

Спасибо.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
rockon404
@rockon404 Куратор тега React
Frontend Developer
почему id undefined?

А вы туда undefined и передаете.

Исправленный вариант:
constructor(props){
  super(props);

  this.postSelectedHandler = this.postSelectedHandler.bind(this, this.props.id);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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