#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} />