reagieren Requisiten nicht aktualisieren mit redux store

Benutzte ich immer reagieren-redux connect zu konfigurieren Requisiten, aber ich benötigen, um ein reagieren Component verwenden der lifecycle-Methoden. Ich bin zu bemerken, dass meine props, die ich packte aus dem store scheinen statisch zu sein, und Sie werden nicht aktualisiert, als die store-updates.

Code:

class AlertModal extends Component {

  title
  isOpen
  message

  componentDidMount() {
    const { store } = this.context
    const state = store.getState()
    console.log('state', state)
    console.log('store', store)
    this.unsubscribe = store.subscribe(() => this.forceUpdate())
    this.title = state.get('alertModal').get('alertModalTitle')
    this.isOpen = state.get('alertModal').get('isAlertModalOpen')
    this.message = state.get('alertModal').get('alertModalMessage')
    this.forceUpdate()
  }

  componentWillUnmount() {
    this.unsubscribe()
  }

  updateAlertModalMessage(message) {
    this.context.store.dispatch(updateAlertModalMessage(message))
  }
  updateAlertModalTitle(title) {
    this.context.store.dispatch(updateAlertModalTitle(title))
  }

  updateAlertModalIsOpen(isOpen) {
    this.context.store.dispatch(updateAlertModalIsOpen(isOpen))
  }

  render() {

    console.log('AlertModal rendered')
    console.log('AlertModal open', this.isOpen) <======= stays true when in store it is false

    return (
      <View

Wie richte ich title, isOpen, und message so reflektieren Sie das speichern von Werten zu allen Zeiten?

  • was ist die Notwendigkeit dieser.forceUpdate() ?
  • Schließen Sie einfach Ihre Komponente zu redux-Shop mit verbinden. Dann nutzen Sie mapStateToProps um die aktualisierten Requisiten.
  • Es ist eine Ansicht, die weiter unten im code, der verwendet onLayout um die Höhe der Ansicht. Dann ist es Stile, Inhalte, die über die Höhe. Deshalb muss ich anrufen forceUpdate nachdem es montiert hat -, weil der erste render nicht über die Höhe.
Schreibe einen Kommentar