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

單對象變化問題

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

复制代码
                                      -- 填個坑
相关推荐
梦曦i16 小时前
@meng-xi/create-uni-app vs unibest:轻量脚手架与重型框架的定位之争
前端·uni-app
平头哥技术团队17 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌恩大侠17 小时前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
yume_sibai17 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js
qiuhaipeng118 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
zzz_236818 小时前
个人 AI 记忆如何跨工具复用:用 Markdown、索引和 Skill 搭一个可治理的记忆库
前端·人工智能·react.js·前端框架·agent·agent测评
剑之所向20 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
计算机魔术师20 小时前
GPT-6 Astra幻觉砍到2%,却被一种老招数轻松绕过
前端
cjy00011120 小时前
2026AI 产品如何从一次性 Demo 变成可重复使用的业务工具?
前端·人工智能·fde
IT_陈寒21 小时前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端