我想在用户打开我的应用程序时执行一些计算并调度一个动作。这是我的代码(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) ...
有人可以告诉我为什么会出现此错误吗?每当您打开应用程序时,还有更好的方法进行计算吗?
答案 0 :(得分:0)
可能是因为this.props.customers
为空。
您没有共享减速器,因此我们看不到customers
的初始状态。