React概念理解

1 useEffect

文章推荐

  1. https://segmentfault.com/a/1190000018639033
  2. https://juejin.cn/post/7044161793471545381
javascript 复制代码
  useEffect(() => {
    console.log('====111111======');
    return () => {
      console.log('=======222222=======');
    };
  });

在每次代码刷新时候都会打印111111和222222
javascript 复制代码
const [state, dispatch] = useReducer(
    (oldState, payload) => {
      if (payload.type === 'tick') {
        return {
          ...oldState,
          count: oldState.count + oldState.step,
        };
      }

      return {
        ...oldState,
      };
    },
    { count: 0, step: 1, type: '' },
  );
  useEffect(() => {
    console.log('========111111======');
    const id = setInterval(() => {
      console.log('========222222======', state.count);
      dispatch({ type: 'tick' }); 
    }, 1000);
    return () => {
      console.log('========333333======', state.count);
      clearInterval(id);
    };
  }, [dispatch]);

 <h1>{state.count}</h1>

console.log('========111111======'); 只会执行一次,****说明每次返回的dispatch都是同一个函数。

console.log('========222222======', state.count);会被多次执行,但是打印出来的state.count会一直是0 (因为Capture Value的原因)

console.log('========333333======', state.count); 不会执行,页面其他state更新它也不受影响
页面其他state更新不会影响到上面useEffect内部执行。

h1标签里面的值会正常一秒增加一次。


可以把上面理解成一个小型的Redux。
相关推荐
前端开发呀几秒前
约定式路由的极简主义实践:一个插件搞定 React/Vue × Vite/Rspack
前端
我就是马云飞7 分钟前
停更5年后,我为什么重新开始写技术内容了
android·前端·程序员
品克缤15 分钟前
Vue3 + Router 页面切换时滚动条闪烁问题记录
前端·javascript·css·vue.js
前端老石人16 分钟前
文本级语义与变更标记
前端·html
冰暮流星19 分钟前
javascript之dom方法访问内容
开发语言·前端·javascript
有意义20 分钟前
滴滴一面复盘:从CSS布局到TS核心思想
前端·面试
竹林81821 分钟前
React + wagmi 实战:从零构建一个能“读”能“写”的 DeFi 前端,我踩了这些坑
前端·javascript
我命由我1234521 分钟前
在 React 项目中,配置了 setupProxy.js 文件,无法正常访问 http://localhost:3000
开发语言·前端·javascript·react.js·前端框架·ecmascript·js
俺不会敲代码啊啊啊24 分钟前
封装 ECharts Hook 适配多种图表容器
前端·vue.js·typescript·echarts
J2虾虾28 分钟前
在Vue3中推荐使用的函数定义方法
前端·javascript·vue.js