Исключение сокета при попытке подключения к TCP-серверу [дубликат]

Я столкнулся с той же проблемой.

В большинстве сценариев использование hack-ish setTimeout(() => { }, 0) в componentDidMount() сработало.

Но не в частном случае; и я не хотел использовать ReachDOM findDOMNode, поскольку в документации написано:

Примечание: findDOMNode - это управляющий штрих, используемый для доступа к базовому узлу DOM. В большинстве случаев использование этого выходного люка не рекомендуется, поскольку оно пробивает абстракцию компонента.

(Источник: https://facebook.github.io/react/docs/react -dom.html # finddomnode )

Итак, в этом конкретном компоненте мне пришлось использовать событие componentDidUpdate(), поэтому мой код оказался таким:

componentDidMount() {
    // feel this a little hacky? check this: http://stackoverflow.com/questions/26556436/react-after-render-code
    setTimeout(() => {
       window.addEventListener("resize", this.updateDimensions.bind(this));
       this.updateDimensions();
    }, 0);
}

И затем:

componentDidUpdate() {
    this.updateDimensions();
}

Наконец, в моем случае мне пришлось удалить прослушиватель, созданный в componentDidMount:

componentWillUnmount() {
    window.removeEventListener("resize", this.updateDimensions.bind(this));
}

2
задан thisidid 4 March 2019 в 12:35
поделиться

1 ответ

В Android вы не можете запускать сетевые действия в главном потоке - вам нужно запускать их в другом потоке, например:

Thread mThread = new Thread(new Runnable() {

@Override
public void run() {
    try  {
        //Put your code that you want to run in here(check your connection for example)
    } catch (Exception e) {
        e.printStackTrace();
    }
  }
});

mThread.start
0
ответ дан Tamir Abutbul 4 March 2019 в 12:35
поделиться
Другие вопросы по тегам:

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