this.setState не работает в моем & ldquo; validate (e) & rdquo; метод

Python 3.3 представил contextlib.ExitStack только для такой ситуации. Он дает вам «стек», к которому вы добавляете менеджеров контекста по мере необходимости. В вашем случае вы сделаете следующее:

from contextlib import ExitStack

with ExitStack() as stack:
    if needs_with():
        gs = stack.enter_context(get_stuff())

    # do nearly the same large block of stuff,
    # involving gs or not, depending on needs_with()

Все, что введено в stack, автоматически exit ed в конце инструкции with, как обычно. (Если ничего не введено, это не проблема.) В этом примере все, что было возвращено get_stuff(), автоматически exit.

Если вам нужно использовать более раннюю версию python, вы можете иметь возможность использовать модуль contextlib2 , хотя это не является стандартным. Он поддерживает эту и другие функции в более ранних версиях python. Вы можете даже сделать условный импорт, если вам нравится этот подход.

0
задан user3002792 16 January 2019 в 12:12
поделиться

2 ответа

Я заметил, что журнал не печатается даже при вызове в качестве второго параметра. Мне кажется, что функция this.setState () не работает. Он пропускает функцию this.setState () в методе validate ().

0
ответ дан user3002792 16 January 2019 в 12:12
поделиться

setState не является синхронным, поэтому:

this.setState({ isAuthorized: authorized });
console.log(this.state.isAuthorized) // here logs the value prior of the setState

Если вы хотите войти сразу после setState, передайте обратный вызов в качестве второго параметра:

this.setState({ isAuthorized: authorized }, () => console.log(this.state.isAuthorized));
0
ответ дан 0xc14m1z 16 January 2019 в 12:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: