Обновить список в компоненте, когда база данных обновила react

Мне нужна помощь, чтобы подумать. Теперь я получаю и отображаю список пользователей из моей базы данных в зависимости от того, установлено ли для пользователя значение true или false. И это отлично работает, но когда я меняю пользователя в базе данных с true на false, я хотел бы обновить отображаемый список.

если я повторно визуализирую страницу, компонентWillMount выполнит эту работу за меня, но я хотел бы обновить список без его повторной визуализации.

Я смотрел и пробовал использовать componentWillUpdate, но не могу заставить его работать.

 class activeUser extends Component {
// Call fetchList to get access to the users
 componentWillMount () {
this.props.fetchList()

   this.createDataSource(this.props)
}

 componentWillReceiveProps (nextProps) {
// nextProps are the next set of props that this component
// will be rendered with
// this.props is still the old set of props

  this.createDataSource(nextProps)
}

createDataSource ({ users }) {
const ds = new ListView.DataSource({
  rowHasChanged: (r1, r2) => r1 !== r2
  })

  this.dataSource = ds.cloneWithRows(users)
}

// Render out the users
renderRow (user) {
 return <ListUserItem user={user} />
}

render () {

  return (

    <View>

      <View style={{ height: 320, justifyContent: 'center', alignItems: 
'center', marginTop: 35 }} >

        <ListView
         showsVerticalScrollIndicator={false}
        enableEmptySections
        dataSource={this.dataSource}
        renderRow={this.renderRow}
  />
    </View>
  </View>

  )
 }
}

 const mapStateToProps = state => {
 const users = _.map(state.list, (val) => {
  return {...val}
})
return { users }
}

 export default connect(mapStateToProps, {fetchList})(GoingOut)

Вам нужно подумать о том, как ваш реагирующий компонент узнает, что ваша БД обновлена? ComponentWillUpdate сработает только в том случае, если вы передадите в компонент новые свойства. Проблема в том, что ваш компонент в настоящее время получает данные из вашей базы данных только один раз. Это означает, что если вы хотите, чтобы компонент обновлялся без необходимости обновления, вам необходимо вызывать свою базу данных каждые x секунд и извлекать данные, проверять, отличаются ли данные от ваших текущих данных, и изменять состояние вашего компонента, если состояние отличается.

Dominik 11.04.2018 13:51
2
1
535
0

Другие вопросы по теме