Реагируйте this.onChange () не вызывает внутри функции карты - PullRequest
0 голосов
/ 22 апреля 2020

я получаю следующую ошибку, когда использую для вызова функции onChange внутри метода map

Uncaught TypeError: Cannot read property 'onCheckChange' of undefined at onChange

мой код следующий

  getPlanCheckbox(jsonParseservicelist, bbuserid) {
        const returnresult = jsonParseservicelist.map(function (single) {
          return (
            <div className="">
              <label className="" >
                <input type="checkbox" onChange={() => this.onCheckChange(bbuserid, single.plantype)} defaultChecked={single.isActive == 1 ? "checked" : ""} />
                <span className="" />
              </label>
            </div>);
        });
        return returnresult;
      }



    onCheckChange = (e, bbuid, plantype) => {
        console.log(bbuid, plantype);

      }

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

Я попробую это, и я нашел 2 решения

1-й только что заменил вашу функцию следующим

getPlanCheckbox(jsonParseservicelist, bbuserid) {
    var self = this;
    const returnresult = jsonParseservicelist.map(function (single) {
      return (
        <div className="">
          <label className="" >
            <input type="checkbox" onChange={() => self.onCheckChange(bbuserid, single.plantype)} defaultChecked={single.isActive == 1 ? "checked" : ""} />
            <span className="" />
          </label>
        </div>);
    });
    return returnresult;
  }

просто возьмите this внутри другого variable и пользователя с этим именем переменной для вызова функции, скажем,

var self = this;

теперь я использую self для вызова функции, подобной этой

self.onCheckChange();

и 2-е - это использование карты в качестве функции стрелки

data.map((single) => {
})
1 голос
/ 22 апреля 2020

Определите функцию карты как стрелку, потому что, в противном случае, this не будет глобальным контекстом. То же самое применяется для функции getPlanCheckbox, если вы не связали this в своем конструкторе:

  getPlanCheckbox = (jsonParseservicelist, bbuserid) => {
        const returnresult = jsonParseservicelist.map((single) => {
          return (
            <div className="">
              <label className="" >
                <input type="checkbox" onChange={() => this.onCheckChange(bbuserid, single.plantype)} defaultChecked={single.isActive == 1 ? "checked" : ""} />
                <span className="" />
              </label>
            </div>);
        });
        return returnresult;
      }
...