Using react redux and redux persist



我想执行一些计算,并在用户打开我的应用程序时调度操作。这是我的代码(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),该组件连接到我的商店。我正在我的应用程序组件中渲染此组件。但是,我收到以下错误:

类型错误: 类型错误: 无法读取未定义的属性"映射"

此错误位于: in ConnectedMainNavigator (at App.js:82) ...

有人可以告诉我为什么会出现此错误吗?另外,在打开应用时是否有更好的方法来执行计算?

这可能是因为this.props.customers为空。

您没有共享您的化简器,因此我们无法看到customers的初始状态。

最新更新