Использование реактивного редукса и редукса сохраняются - PullRequest
0 голосов
/ 25 декабря 2018

Я хочу выполнить некоторые вычисления и отправлять действие всякий раз, когда пользователь открывает мое приложение.Это соответствующая часть моего кода (App.js):

class ConnectedMainNavigator extends React.Component {
  componentDidMount() {
    updatedCustomers = this.props.customers.map(customer => {
      let frequency = 0
      currentDate = new Date()
      customer.transactions.forEach(transaction => {
        if (daysFromTransaction(transaction.date, currentDate) < 30)
          frequency++;
      })
      return {
        ...customer,
        frequency: frequency
      }
    })
    this.props.updateFrequency([...updatedCustomers])
  }
  render() {
    return <MainNavigator/>
  }
}

const mapStateToProps = state => ({
  customers: state.customers
})

connect(mapStateToProps,{updateFrequency: updateFrequency})(ConnectedMainNavigator)


export default class App extends React.Component {
  state = {
    isReady: false,
  }

  async componentWillMount() {
      await Expo.Font.loadAsync({
         'MaterialIcons': require('@expo/vector-icons/fonts/MaterialIcons.ttf')
      });
      this.setState({isReady: true})
    }

  render() {
    if (!this.state.isReady)
      return <Expo.AppLoading/>

    return (
      <Provider store={store}>
        <PersistGate persistor={persistor}>
          <ConnectedMainNavigator/>
        </PersistGate>
      </Provider>
    );
  }
}

Я создал отдельный компонент (ConnectedMainNavigator), который подключается к моему магазину.Я рендеринг этого компонента в моем компоненте приложения.Однако я получаю следующую ошибку:

TypeError: TypeError: Невозможно прочитать свойство 'map' из неопределенного

Эта ошибка находится по адресу: в ConnectedMainNavigator (в App.js:82) ...

Может кто-нибудь сказать мне, почему я получаю эту ошибку?Кроме того, есть ли лучший способ выполнять вычисления, когда ваше приложение открыто?

1 Ответ

0 голосов
/ 13 января 2019

Вероятно, это потому, что this.props.customers равно нулю.

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

...