使用react redux和redux持续存在

时间:2018-12-25 04:09:33

标签: react-native redux react-redux 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),该组件可连接到我的商店。我正在我的App组件中渲染此组件。但是,出现以下错误:

  

TypeError:TypeError:无法读取未定义的属性“ map”

     

此错误位于:       在ConnectedMainNavigator中(在App.js:82)       ...

有人可以告诉我为什么会出现此错误吗?每当您打开应用程序时,还有更好的方法进行计算吗?

1 个答案:

答案 0 :(得分:0)

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

您没有共享减速器,因此我们看不到customers的初始状态。