reactjs - 登录到控制台而不是减速器操作中的代理对象时如何查看状态?
问题描述
在console.log()
reducer 操作中使用时,状态打印为 Proxy 对象,而不是我真正想看到的对象。我如何看到实际的对象?我正在使用 redux-starter-kit createSlice,我不确定这是否与它有关。
import { createSlice } from "redux-starter-kit";
export interface IToDo {
id: number;
name: string;
complete: boolean;
}
const initialState: IToDo[] = [
{
id: 1,
name: 'Read a bit',
complete: true
}
];
const { actions, reducer } = createSlice({
slice: "todos",
initialState,
reducers: {
toggleTodo(state: IToDo[], action) {
const todo = state.find(todo => todo.id === action.payload);
console.log(todo);
if (todo) {
todo.complete = !todo.complete;
}
}
}
})
export const toDosReducer = reducer;
export const { toggleTodo } = actions;
这是我在切换 ToDo 时在控制台中看到的输出:
解决方案
Redux 工具包包含current
专门用于此目的的 immer 函数。您可以致电:
console.log(current(state))
根据redux 工具包文档,
immer 库中的当前函数,它获取草稿当前状态的快照并最终确定它(但不冻结)。Current 是一个很好的工具,可以在调试期间打印当前状态,并且 current 的输出也可以安全地泄漏到生产者之外。
immer 文档中有其他信息。
推荐阅读
- php - 如何使用 Laravel 填充选择?
- python - 如何将 .h5 文件转换为 .pb 文件?
- iis - 对预检请求的响应未通过访问控制检查:在标头中使用身份验证时,它没有 HTTP ok 状态
- powershell - Powershell 键/值对匹配问题
- r - 可以使用 lm() 将其他变量保持在其平均值,并将回归线绘制在双变量散点图上吗?
- android - 无故自动返回上一个活动画面
- python - 新版 fasttext 中的 predict_proba
- angular - 在 Cordova/Ionic 4 移动应用程序中提供原生广告?
- git - 如何在没有私钥的情况下添加具有 SSH URL 的子模块
- context-free-grammar - 模糊的 CFG 是否有可能转换为 CNF 并变得明确?