推断:虽然redux的action已经派发,但state值没有更新,导致页面渲染失败。
查看redux调试工具,action派发失败,状态为rejected,报错信息:undefined is not valid JSON
可是为什么会出现这个问题?redux哪里出了错误呢?
于是继续审查redux的代码,终于找到了线索:
这里有个JSON解构的操作:从header中获取"x-pagination"的信息。
但是如果header中如果不存在"x-pagination"字段
,
那么JSON.parse就会解析失败,因为此时相当于对undefined对象进行解析
,自然就会报错,这就是redux为什么会解析失败的原因,因为下面postman显示返回的header中确实没有x-pagination字段:
所以,这里必须对hearder获取x-pagination的结果进行一个判空操作:
JSON.parse(pagination ? pagination : null )
通过上面一行代码就能避免JSON.parse失败,从而导致redux action派发出错
此时redux action派发成功,store里面也有数据了
以上的例子是web客户端出现的JSON解析错误导致的redux, action派发失败。
同样:
服务端如果出现JSON解析问题
,同样也会导致客户端的redux解析错误,同样导致action派发失败。如下面的例子: redux报错: ""[object Object]" is not valid JSON"
原因是服务端在响应请求时,在设置headers没有把object对象转化成字符串,而是直接把object对象传给了header。
这样客户端在解析header数据时,必然报错!
解决办法:服务端设置headers时,
使用JSON.stringify将JSON对象转化成JSON字符串:
res.header("x-pagination", JSON.stringify(paginationInfo));
总结:Redux Toolkit中action派发但state值不更新的原因,通常是由action派发失败造成。
action派发失败的原因:
JSON数据解析错误。这里分两种情况:
1. react web客户端代码中redux做JSON.parse解析操作时,没有进行判空处理
2. 服务端设置header对象时,没有将JSON对象转化成字符串。
总而言之: redux使用
JSON.parse时一定要非常小心,
而header必须通过字符串设置数据,不能接收JSON对象!
// src/store/index.js
import { createStore, applyMiddleware } from '
redux
'
import thunkMiddleware from '
redux
-thunk'
import { createLogger } from '
redux
-logger'
import rootReducer from '../reducers'
const middlewares = [
thunkMiddleware,
create
react
redux
不
更新
State
使用
redux
集
中
管理状态,将
state
设置为对象,组件调用
action
中
方法
更新
state
,但是组件内容并没有
更新
。
原因
是
state
是引用
state
是字面变量的
值
时,地址会随
值
改变。
state
为对象时,地址不变 ,直接修改
state
的时候store内部的
state
同样也就变了,
redux
认为dispatch前后的
state
没有改变,就不会重新render。
深拷贝处理:
return JSON.parse(JSON.stringify(pre
State
));
遇到的问题
import { ADD_PERSON, DELETE_PERSON} from '../constant'
export default function personReducer(pre
State
= {personArr: []},
action
) {
const {type, data} =
action
let n
自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图自动办公-20 Python文本数据可视化之“词云”图
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键
原因
之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示
中
更有效地传达信息。
在
Redux
中
,slice 是指一个“切片”,它代表了一个
Redux
store 的一部分。
Redux
Toolkit
的 slice 是一个帮助开发者更快捷地创建
Redux
store 的工具,它将 reducer 函数、
action
creators 和
action
types 组合到一个对象
中
,使得创建和维护
Redux
store 变得更加容易。
具体来说,
Redux
Toolkit
的 slice 函数接收一个包含 reducer 函数和所需初始状态的对象,然后自动生成与该 reducer 相关的
action
creators 和
action
types。这样,开发者可以更加简单地编写
Redux
store 的代码,而不必手动定义和管理每个
action
creator 和
action
type。
使用
Redux
Toolkit
的 slice 函数可以使得
Redux
store 的创建和维护变得更加容易、可读性更高,并且能够提高开发效率。
解决报错:No converter for [xxx] with preset Content-Type ‘null‘和Could not find acceptable representation
解决docker运行redis报错:Fatal error, can‘t open config file /etc/redis/redis.conf以及启动redis后自动退出容器
解决报错:Not implemented: HTMLCanvasElement.prototype.getContext (xxx installing the canvas npm pack
彻底解决charles抓包https乱码的问题
解决flask启动报错:ImportError: DLL load failed while importing _dukpy: 找不到指定的程序
解决报错:Not implemented: HTMLCanvasElement.prototype.getContext (xxx installing the canvas npm pack
彻底解决charles抓包https乱码的问题
解决flask启动报错:ImportError: DLL load failed while importing _dukpy: 找不到指定的程序