将redux与react-native结合使用时,发现只有将另一个正在运行的手机应用程序窗口切换到第一个时,mapStateToProps才会更新。
例如,下面的测试代码符合以下步骤:
产生:
相反,有:
除非我们首先在应用程序窗口之间来回切换,否则mapStateToProps函数不会更新组件。
有什么想法吗?
减速器
import { combineReducers } from 'redux';
const test = (state = 'Start', action) => {
switch(action.type){
case 'ADD':
return('Changed')
default:
return state
}
}
export default combineReducers({
test
})
测试操作+容器
import { connect } from 'react-redux'
import TestComp from '../components/TestComp'
const mapStateToProps = (state) => ({
test: state.test
})
const mapDispatchToProps = (dispatch) => ({
testDispatch: () => dispatch({type: 'ADD'})
})
export default connect(
mapStateToProps,
mapDispatchToProps
)(TestComp)
组件
import React, { Component } from 'react'
class TestComp extends Component{
constructor(props){
super(props)
this.test = props.test
this.testDispatch = props.testDispatch
}
render(){
return(
<View>
<Text>
{this.test}
</Text>
<Button
title='Dispatch Test Action'
onPress={() => this.testDispatch()}
/>
</View>
)
}
}
export default TestComp
答案 0 :(得分:2)
问题是您正在构造器中捕获props.test
的值。在对象的生命周期中永远不会再更新this.test,这就是为什么看不到更新的原因。
相反,您应该删除this.test
组件内的TestComp
并改用this.props.test
。