gpt4 book ai didi

javascript - redux getState() 不返回更新后的状态

转载 作者:行者123 更新时间:2023-11-29 20:54:44 26 4
gpt4 key购买 nike

让我坚持了好几天的问题是,虽然我的 redux devtool 显示状态更新成功,没有任何类型的突变,并且 View 组件重新渲染成功,但是当我调用 getState() 时,它总是返回初始状态并且不会'不关心更新状态!任何知道什么会导致这种情况的人请帮助我。

我使用 react-redux 和 redux-thunk

Action .js

export function test(data) {
return {
type: 'TEST',
data
};
}

export function testFunc(data) {
return dispatch => {
dispatch(test(data))
console.log('GLOBAL STATE IS :', store.getState() )
};
}

reducer.js

export default function peopleReducer(state = initialState, action) {
switch (action.type) {
case 'TEST':
return {
...state,
test: action.data
}
default:
return state;
}
}

Page01.js

componentDidUpdate(){
console.log('get state = ', store.getState())
}

....

<TouchableHighlight
underlayColor={"#0e911b"}
onPress={() => {
this.props.testing('test contenttttt !!!!')
}}
>
<Text style={styles.title}>ACTION</Text>
</TouchableHighlight>



function mapStateToProps(state) {
return {
people: state.people,
planets: state.planets,
test: state.test
};
}

function mapDispatchToProps(dispatch) {
return {
getPeople: () => dispatch(getPeopleFromAPI()),
getPlanets: () => dispatch(getPlanetsFromAPI()),
testing: data => dispatch(testFunc(data)) };
}

export default connect(mapStateToProps, mapDispatchToProps)(App);

最佳答案

为了使用getState()在操作文件中,您需要直接从存储中使用它,而不是在使用 redux-thunk 时将其作为内部函数的第二个参数以及调度一起获取

export function testFunc(data) {
return (dispatch, getState) => {
dispatch(test(data))
console.log('GLOBAL STATE IS :', getState())
};
}

此外,由于 redux-state 更新是异步发生的,因此在您发送操作后不会立即看到您的更新状态。您应该在 componentDidUpdate 中检查它您正在使用状态的组件的功能。

此外,为了使用 store.getState() 获取更新状态您需要订阅状态更改,例如

// Every time the state changes, log it
// Note that subscribe() returns a function for unregistering the listener
const unsubscribe = store.subscribe(() =>
console.log(store.getState())
)

你可以unsubscribe通过调用

unsubscribe()

您可以阅读更多相关信息 here

然而,当您使用连接时,您不需要使用 store.getState()在组件中,您可以使用 mapStateToProps获取状态值的函数。

关于javascript - redux getState() 不返回更新后的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49892456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com