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