Nano Hash - криптовалюты, майнинг, программирование

повторно использовать firebase в нескольких компонентах

Извините, во-первых, потому что я действительно новичок в этом, и это может показаться очень простым вопросом. У меня есть база данных firebase, которую я использую в компоненте Main для отображения списка данных. Кроме того, я создал новый компонент ниже, чтобы отображать только один случайный элемент данных: WordOfTheDay вот так:

class WordOfTheDay extends Component{

  render(){

    return(
      <Card
        title='WORD OF THE DAY'
      >
              <ListView
              dataSource={this.state.dataSource}
              renderRow={this._renderWordOfTheDay.bind(this)}
              enableEmptySections={true}
              />

      </Card>

      );

  }


 _renderWordOfTheDay(item) {
     const { navigate } = this.props.navigation;
     return (
      <ListItem
        title={
              <Text item={item}
               onPress={() =>
               navigate('Details', {...item} )}
               />
              }
        />
      );
  }

}

У меня ошибка null is not an object(evaluating 'this.state.dataSource'): скриншот здесь

Мой вопрос в том, как я могу использовать базу данных, должен ли я переписать все ListenForItems, ComponentDidMount...? в новом компоненте?


  • Это весь код компонента? У вас нет определенного состояния. Вы должны определить состояние в конструкторе, например this.state={dataSrouce: "string data"} 21.06.2017
  • @MilanGulyas, я сделал это, но ошибка не может найти переменную: конструктор firebaseApp (реквизиты) { super (реквизиты); this.state = { dataSource: new ListView.DataSource({ rowHasChanged: (row1, row2) => row1 !== row2, }), items: [], loading: true }; this.itemsRef = this.getRef().child('items').limitToLast(1); this._handleResults = this._handleResults.bind(это); } 21.06.2017

Ответы:


1

Начните с настройки пустого списка в качестве источника данных:

constructor(props) {
    super(props);

    const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
    this.state = {
        dataSource: ds.cloneWithRows([])
    };
}

Затем заполните его в componentWillMount следующим образом:

componentWillMount() {
    const ds = new ListView.DataSource({ rowHasChanged: (r1, r2) => r1 !== r2 });
    this.setState({
        dataSource: ds.cloneWithRows(this.props.items)
    })
}
21.06.2017
  • Я добавил, но получил сообщение об ошибке: undefined не является объектом (оценка Object.Keys (dataBlobs [sectionID]) 21.06.2017
  • Спасибо за помощь! 21.06.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..