reactjs - 使用 mapStateToProps 时未定义道具
问题描述
在我的应用程序中,我像这样使用 mapStateToPros:
const mapStateToProps = (state:any) => {
return {
cardsAndBalance: state.cardsAndBalanceReducer
}
}
在调试中,当我停下来时,return
我可以看到我有一些数据处于状态。
当我在我的 useEffect 函数中停止应用程序并检查 时,props
值为props
undefined
useEffect(() => {
console.log('useEffect')
let cardNumbers: number[] = []
const myCards = props.cardsAndBalance.cards;
if(myCards)
myCards.forEach((card: Card) => cardNumbers.push(card.number))
generatePaymentCodeForTavim(cardNumbers = [])
.then((res:any) => {
setBarCode(res.barCode);
})
.catch( (err:any) => {
console.log("error: " + err)
ToastAndroid.show("Error Occurrd - check logs", ToastAndroid.SHORT);
})
}, [])
这就是我将组件连接到商店的方式:
export default connect(mapStateToProps)(PayWithTavimStep1);
这是整个组件:
const PayWithTavimStep1 = ({navigation}:{navigation:any}, props: any) => {
const [barCode, setBarCode] = useState('')
useEffect(() => {
console.log('useEffect')
//.......
}, [])
return (
<View style={styles.container}>
// Some views
</View>
)
}
export default connect(mapStateToProps)(PayWithTavimStep1
当我在 useEffect 中停止执行时,为什么道具未定义?
解决方案
问题是我将两个参数传递给我的组件:({navigation}:{navigation:any}, props: any)
. 当它应该是(props: any)
,现在在我的道具中,我仍然可以访问导航。
推荐阅读
- terraform - 通过 terraform 管理 Auto Scaling 组
- python - Django 相关模型未在表单提交时更新
- kotlin - 如何使用 Kotlin 序列化为嵌套 JSON 组合多态和转换序列化器?
- azure - Azure Boards,如何使用每个工作项类型?
- mysql - Rust:我可以在不准备语句的情况下执行 MySQL 查询吗
- rebol - 在 Red/Rebol 中调用此函数时如何评估函数的细化
- perl - 如何消除有关 while 循环增量的错误
- c# - 在 c# 中解析 JSON 后日期时间格式更改
- javascript - 我的主页总是呈现在所有其他页面之上,就像我在登录时一样,我的主页数据首先呈现为单页中的 2 页
- mockito - 我无法使用 mockito 替换 SpringBatch 中的方法调用