Реакция доступа к setState в обратном вызове без функции стрелки - PullRequest
1 голос
/ 06 февраля 2020

Я разрабатываю код для корпоративного интр anet. Как только база была построена с использованием функций стрелок, я протестировал ее в Inte rnet Exploder. Обнаружив, что он не будет принимать функции стрелок. Я использую React для этого проекта и с тех пор реорганизовал весь код для использования вызовов функций classi c.

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

Вот один пример кода, хотя есть и другие:

<NavLink onClick={function () { 
    this.setState({ openCount: item.pageId }); 
    this.props.CurrentPage_Update(item) 
    }
} 
className="menu menu-link" 
key={"DDNavLink_" + item.pageId}>
{item.title}
</NavLink>

Как я могу получить доступ к объекту "this" для всех моих вызовов функций? Я попытался создать переменную в порядке var set=this.setState;, но это не удалось, хотя он работает со связанными функциями.

Я не уверен, где go, хотя я читал о babel, но я полностью агности c о его использовании и функции, особенно для такого, казалось бы, простого рефакторинга.

Спасибо

1 Ответ

2 голосов
/ 06 февраля 2020

В конце каждого вызова функции я использовал .bind (this), чтобы позволить функции использовать внешний this, а не внутренний.

//blah blah blah
}.bind(this)

Я обнаружил, что должен сделать это на конец каждой закрывающей скобки, если есть какие-либо вызовы этого внутри функции. Я планирую сделать это привычкой для каждого вызова функции classi c независимо от того, нужен он или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...