Как мне предотвратить рендеринг текущей сцены во время перехода сцены с помощью react-native-router-flux?

#react-native #react-native-router-flux

#react-native #react-native-router-flux

Вопрос:

У меня есть компонент ListView на сцене A, в котором изначально ничего нет; это список последних поисковых запросов, привязанных к хранилищу.

Когда пользователь вводит поисковый запрос и нажимает отправить в сцене A, хранилище последних поисковых запросов обновляется, после чего мы немедленно переходим к сцене B. Я получаю предупреждение «пустые заголовки разделов» из ListView, которое, как я полагаю, вызвано тем, что сцена A начинает отображаться при переходе сцены.

Я пытался использовать shouldComponentUpdate() на компоненте Scene A, но, похоже, он не срабатывает?! Я надеялся посмотреть на текущее местоположение и новое местоположение, и если они отличаются, верните false, чтобы предотвратить обновление / рендеринг.

У кого-нибудь есть предложения по этому поводу?

Установка enableEmptySections={true} предотвращает появление предупреждающего сообщения о пустых заголовках разделов, но это похоже на ограничение, а не на постоянное решение.

Ответ №1:

Вы передаете пустой массив в ListView при первоначальном рендеринге, а затем массив с данными, как только они у вас есть?

Если это так, это просто предупреждение о том, что вы отображаете ListView с пустыми разделами, которые в данном случае, вероятно, являются единственным разделом. Вы можете либо передать

 enableEmptySections={true}
  

Или вы можете выполнить простую проверку, чтобы увидеть, есть ли данные для ListView, и, если нет, вернуть null вместо этого. При прохождении данных представление будет повторно отображаться с помощью ListView

В функции рендеринга

 if (!this.state.myVar) return null

return <MyListView myData={this.state.myVar} />