无法在 React 的表中存储我的状态

如何解决无法在 React 的表中存储我的状态

我真的需要你的帮助,我卡住了,我的本地存储有一个小问题,无法将我的状态保存在我的桌子上,当我尝试使用组件的 localstorage 时,我想保存每个单元格的数据CellColor 但当我刷新页面时只保存第一个单元格。我想保存两个元素 CellColor 和 CellData

import React,{ useState,useEffect } from 'react';
import styled from 'styled-components';

 const COLOR = styled.div`
     td {
    width: 150px;
      }
      `;

 const CellColor = () => {
     const darkgreen = '#4FA100';
     const lightgreen = '#88FF17';
     const pink = '#FF43D7';
     const orange = '#FFA419';
     const white = '#FFFFFF';

 const [cellColor,setCellColor] = useState({
   darkgreen,lightgreen,orange,pink,});

 const handleColor = () => {
 setCellColor(
  cellColor === white
? lightgreen
: cellColor === lightgreen
? pink
: cellColor === pink
? orange
: cellColor === orange
? darkgreen
: white
 );
};

useEffect(() => {
 const Data = localStorage.getItem('cell-data');
 setCellColor(JSON.parse(Data));
},[]);

 useEffect(() => {
   localStorage.setItem('cell-data',JSON.stringify(cellColor));
  });

 return (
   <COLOR className="cell-color">
  <td
      className="cell-click"
       role="presentation"
       style={{ backgroundColor: cellColor }}
      onClick={(e) => handleColor(e.target.style.backgroundColor)}
    />
   </COLOR>
  );
   };

export default CellColor;

还有这个和我的第二个组件,或者我使用 Axios 调用我的 api 并映射到 select 以显示我的数据

import React,useEffect } from 'react';
import axios from 'axios';
import styled from 'styled-components';

const SELECTDATA = styled.select`
  width: 150px;
  height: 30px;
 `;

  const CellData = () => {
  const [dataAgency,setDataAgency] = useState([]);
  const [dataHazard,setDataHazard] = useState([]);
  const [dataOther,setDataOther] = useState([]);
  const [dataSite,setDataSite] = useState([]);

  const fetchDataOne = async () => {
  const urlHazard = 'http://localhost:8000/hazards';
  await axios.get(urlHazard).then((response) => {
  setDataHazard(response.data);
  });
  };

  const fetchDataTwo = async () => {
  const urlAgencies = 'http://localhost:8000/agencies';
  await axios.get(urlAgencies).then((response) => {
  setDataAgency(response.data);
  });
  };

  const fetchDataThree = async () => {
  const urlOther = 'http://localhost:8000/others';
  await axios.get(urlOther).then((response) => {
  setDataOther(response.data);
  });
  };
  const fetchDataFour = async () => {
  const urlSite = 'http://localhost:8000/sites';
  await axios.get(urlSite).then((response) => {
  setDataSite(response.data);
  });
  };

 useEffect(() => {
   fetchDataOne();
   fetchDataTwo();
   fetchDataThree();
   fetchDataFour();
 },[]);

  return (
    <div className="cell-data-select">
     <SELECTDATA className="data-select">
    <optgroup label="Action Terrain">
      <option disabled selected value>
        -- --
      </option>
      {dataSite.map((i) => (
        <option key={i._id} value={i.siteName}>
          {i.siteName}
        </option>
      ))}
    </optgroup>
    <optgroup label="Action Agence">
      {dataAgency.map((ag) => (
        <option key={ag._id} value={ag.agencyName}>
          {ag.agencyName}
        </option>
      ))}
    </optgroup>
    <optgroup label="Aleas">
      {dataHazard.map((ha) => (
        <option key={ha._id} value={ha.hazardName}>
          {ha.hazardName}
        </option>
      ))}
    </optgroup>
    <optgroup label="Autre">
      {dataOther.map((ot) => (
        <option key={ot._id} value={ot.otherName}>
          {ot.otherName}
        </option>
      ))}
    </optgroup>
  </SELECTDATA>
</div>
  );

};

export default CellData;

我想保存这两个组件 CellColor 和 CellData

这是我的表格渲染,我使用 COLUMUNS 和 DataCell 来映射我的值

import React,{ useContext } from 'react';
import { Table } from 'react-bootstrap';
import PrevContext from '../service/PrevContext';
import './StylePlanning.css';
import 'bootstrap/dist/css/bootstrap.min.css';
import COLUMNS from './table-components/Columns';
import DataCell from './table-components/DataCell';

const TablePrev = () => {
const { prevName } = useContext(PrevContext);
const { firstname,lastname } = prevName;

 return (
 <div className="block-planning-prev">
 <Table bordered style={{ color: 'navy',fontWeight: 'bold' }}>
  <thead>
  <tr className="row0">
    <td className="month-title" colSpan="31">
      <input type="month" />
    </td>
  </tr>
  <tr className="row1">
    <td>Preventeur</td>
    {COLUMNS.map((ic) => (
      <td key={ic.accessor} value={ic.Header}>
        {ic.Header}
      </td>
    ))}
  </tr>
</thead>
{prevName.map((i) => (
  <tbody>
    <tr className="row0">
      <th
        key={i._id}
        value={(firstname,lastname)}
        className="column0"
        rowSpan="2"
      >
        {i.firstname}
        {i.lastname}
      </th>
      {DataCell.map((id) => (
        <td key={id.key} value={(id.col,id.col1)} className="column1">
          {id.col}
          {id.col1}
        </td>
      ))}
    </tr>
    <tr className="row1">
      {DataCell.map((item) => (
        <td
          key={item.key}
          value={(item.col,item.col1)}
          className="column2"
        >
          {item.col}
          {item.col1}
        </td>
      ))}
     </tr>
   </tbody>
   ))}
    </Table>
  </div>
  );
 };
export default TablePrev;

这里是我的数据文件 DataCell,我在其中导入了我的两个 JSX 元素 CellColor 和 CellData

import React from 'react';
import CellColor from './CellColor';
import CellData from './CellData';

 const DATA = [
 {
  col: <CellColor />,col1: <CellData />,key: '1',},{
  col: <CellColor />,key: '2',key: '3',{
  etc.
]
export default DATA;

我完全迷失了,我不知道现在如何继续,最好的选择是什么,我直接在我的表格渲染中尝试过但不起作用,所以我认为当我使用 localstorage 时最好直接保存到父组件中?非常感谢您的帮助

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res