重新了解一下之前的單對象變化問題

單對象變化問題

2年之前寫過一篇文章,有些誤導,重新寫一遍

聲明一個方法

不管是在哪裡,創建一個名為 single-object.jsx 的文件

js 复制代码
export const singleObject = (newObj, oldObj) => {
  return JSON.stringify(newObj) == JSON.stringify(oldObj);
}

在頁面中監聽這個對象的改變

js 复制代码
import { useState, useEffect } from "react";
import { singleObject } from './common/single-object.jsx'

const App = () => {
  const [objOne, setObjOne] = useState({ name: "objOne" });
  const [objOneCopy, setObjOneCopy] = useState({});

  useEffect(() => {
    setObjOneCopy({...objOne});
  }, []);

  useEffect(() => {
    console.log(singleObject(objOne, objOneCopy));
  }, [objOne, objOneCopy]);

  const changeObj = async () => {
    await setObjOne({ name: "objOne_change" });
  }

  return (
    <div className="App">
      <div>objOne: {JSON.stringify(objOne)}</div>
      <div>objTwo: {JSON.stringify(objOneCopy)}</div>
      <button onClick={changeObj}>改變obj_one</button>
    </div>
  );
}

export default App;

總之,這個代碼是利用與在你做出一個操作後,你想知道你這個對象有沒有哪裡發生過改變,如果對象的keys或者對象的value有發生過改變,就會返回false,因為使用了JSON.stringify則會做出全方位的檢查,能改變的應該也只有key:value

复制代码
                                      -- 填個坑
相关推荐
淼澄研学几秒前
Python调用通义千问API实现长尾搜题内容自动化生成实战
前端·react.js·架构
绿岛之北2 分钟前
Electron 安全入门:为什么一个 XSS 可能变成 RCE?
前端·electron
舒灿10 分钟前
DeepSeek Harness——Agent自我进化的实现途径?
前端·ai编程·deepseek
嘟嘟071711 分钟前
顺时针螺旋填充 n×n 矩阵:手撕 generateMatrix 的四个 for 循环
javascript·算法·面试
weixin_BYSJ198720 分钟前
springboot技能与工具共享小程序---附源码29657
java·javascript·spring boot·python·小程序·django·php
cindershade21 分钟前
React Server Components 在真实项目中的边界:哪些组件该放在服务端
前端
OpenTiny社区21 分钟前
GenUI SDK v1.3.0 开发者深度解读:当生成式 UI 开始"长出"工程化骨架
前端·ai编程
前端粉刷匠25 分钟前
2025 年是 Agent 的,2026 年是 Harness 的——AI 编程 Harness 架构深度解析
前端·人工智能
张元清28 分钟前
React useSessionStorage Hook:刷新不丢、只属于当前标签页的状态 (2026)
前端·javascript·react.js
weixin_BYSJ198730 分钟前
flask民族服饰饰品商城小程序---附源码37399
java·javascript·spring boot·python·小程序·django·php