Reactjs 一旦reducer更新了新的状态,有没有办法控制台记录整个状态树?
我是个新来的本地人。 我想知道一个reducer函数执行后的当前状态树。 我想知道状态树的最新值 我在dumb组件中设置了逻辑,如果loggedIn状态为true,则呈现第2页,如果为false,则呈现第1页 哑组件是否不知道更新,或者这不是安排流的正确方式 我的操作是当我初始化存储时,我发送一个操作来检查用户本地存储中是否有访问令牌。如果存在,请更新状态。。 但不知何故,国家似乎没有更新 编辑: 这是我的减速机Reactjs 一旦reducer更新了新的状态,有没有办法控制台记录整个状态树?,reactjs,react-native,react-redux,Reactjs,React Native,React Redux,我是个新来的本地人。 我想知道一个reducer函数执行后的当前状态树。 我想知道状态树的最新值 我在dumb组件中设置了逻辑,如果loggedIn状态为true,则呈现第2页,如果为false,则呈现第1页 哑组件是否不知道更新,或者这不是安排流的正确方式 我的操作是当我初始化存储时,我发送一个操作来检查用户本地存储中是否有访问令牌。如果存在,请更新状态。。 但不知何故,国家似乎没有更新 编辑: 这是我的减速机 const initialState = { token: null,
const initialState = {
token: null,
username: null,
loggedIn: false
}
export const reducer = (state = initialState, action) => {
switch (action.type) {
// Reducer does not handle API type of actions
case types.STORE_TOKEN:
AsyncStorage.setItem(localStorage.ACCESS_TOKEN, JSON.stringify(action.payload.token))
return {
token: action.payload.token,
username : action.payload.username,
loggedIn: true
}
case types.GET_TOKEN:
AsyncStorage.getItem(localStorage.ACCESS_TOKEN).then((storage) =>{
if(!storage){ return state }
return {
token: storage,
loggedIn: true
}
})
default:
return state
}
}
我建议您添加一个用于日志记录的中间件。这就是例子。如果使用,可以通过以下方式执行:
1. Install [redux-logger](https://github.com/gaearon/redux-logger) package:
(npm i --save redux-logger or yarn add redux-logger)
2. Add to file where you create store following imports:
import { createLogger } from 'redux-logger'
import { createStore, applyMiddleware } from 'redux'
3. Create your store like this:
const store = createStore(reducer, applyMiddleware(createLogger()))
完成此操作后,在控制台浏览器中,您将看到如下内容:
您可以在
createStore
功能中使用中间件,如下所示。它会对所有操作、当前状态和下一个状态进行控制台。它使用起来很简单,而且很有帮助
logger.js
import _ from 'lodash'
const DO_NOT_LOG = [
'EFFECT_TRIGGERED', 'EFFECT_RESOLVED', 'EFFECT_REJECTED',
]
export default store => next => action => {
if ((!_.includes(DO_NOT_LOG, action.type))) {
console.info('Dispatching: ', action)
}
let result = next(action)
if ((!_.includes(DO_NOT_LOG, action.type))) {
console.log('Next State: ', store.getState())
}
return result
}
createStore
功能:
import logger from './middleware/logger'
...
const middleware = [logger]
const store = createStore(
reducer,
initialState,
compose(
applyMiddleware(...middleware),
autoRehydrate(),
),
)
有一个函数,您可以使用它检查更新的值。它不更新。。我想我在reducer中犯了错误。我已经更新了我的reducer@MayankShukla