react-redux是一种react官方推出的redux管理工具 他的好处就是 我们不需要再用store.subscribe去监听数据变化再去重新渲染项目了 项目自己会检查状态修改并重新渲染界面

但很多人都会遇到用一个对象 明明数据改了 但界面就是没有重新渲染

这个问题要修改 counter
我的代码是这样的

let stateMap = {
   name: "小猫猫",
   money: 2800
const counter = ( state = stateMap,action )  => {
    switch(action.type) {
        case"PriceRise":
            state.money = (state.money + action.value);
            return state
        case"DevaLuation":
            state.money = (state.money - action.value);
            return state
        default:
            return state;
export default counter

确实问题就是 你的对象如果没有深拷贝 react项目检查不到你的数据改变了

我们将代码改成

let stateMap = {
   name: "小猫猫",
   money: 2800
const counter = ( state = stateMap,action )  => {
    switch(action.type) {
        case"PriceRise":
            state = JSON.parse(JSON.stringify(state));
            state.money = (state.money + action.value);
            return state
        case"DevaLuation":
            state = JSON.parse(JSON.stringify(state));
            state.money = (state.money - action.value);
            return state
        default:
            return state;
export default counter

简单说 就是每次要改对象数据前 先将对象深拷贝一次 react项目就能检查到 并重新渲染界面了

本期前端小知识介绍的是 React 中很多新手会犯的点。小知识在真实开发环境中,我们在 Redux 中存储的数据必然是很复杂的,多层结构比比皆是。如果在操作多层结构时一个不当,就可能会发... arr.splice(index,1) setLists(arr); 这里要根据react的渲染机制源码,因为react 会判断旧状态和新状态是否有变化,如果没有变化就不渲染,所以要改变地址告诉render 是新状态要重新渲染 原文链接:https://blog.csdn.net/w 在useEffect中监听state变化,存进ref中 import './App.css'; import React, { useState,useRef,useEffect} from 'react'; function App() { let [count,setCount]=useState(0) const myRef = console.log(123) const { positionInfos } = this.state if(deptInfos.length >= 10) return message.error('最多只能添加10条!'); const addDutyList = positionInfos.concat([{ dutyId:'', posit