You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现关闭浏览器后仍可访问React校园Chromebook信息录入系统的已存数据

实现方案

方案1:单设备本地存储(无需后端,开发成本最低)

直接使用浏览器自带的localStorage API即可实现数据持久化,仅需修改你的App.js代码即可完成:
需要做两处核心改动:

  • 组件初始化时从localStorage读取已存储的记录,赋值给state的items字段
  • 每次提交表单更新items后,同步把新的记录数组写入localStorage

修改后的App.js完整代码如下:

class App extends Component {
  constructor() {
    super();
    // 组件初始化时读取本地存储的已有记录,无记录则默认空数组
    const savedItems = localStorage.getItem('chromebookRecords') 
      ? JSON.parse(localStorage.getItem('chromebookRecords')) 
      : [];
    this.state = {
      laptopTag: '',
      studentName: '',
      studentGrade: '',
      status: '',
      items: savedItems
    }
  };

  handleFormSubmit = (e) => {
    e.preventDefault();

    let items = [...this.state.items];

    items.push({
      laptopTag: this.state.laptopTag,
      studentName: this.state.studentName,
      studentGrade: this.state.studentGrade,
      status: this.state.status,
    });

    this.setState({
      items,
      laptopTag: '',
      studentName: '',
      studentGrade: '',
      status: '',
    }, () => {
      // 状态更新后同步将新记录写入本地存储
      localStorage.setItem('chromebookRecords', JSON.stringify(this.state.items));
    });
  };

  handleInputChange = (e) => {
    let input = e.target;
    let name = e.target.name;
    let value = input.value;

    this.setState({
      [name]: value
    })
  };

  render() {
    return (
      <div className="App">
        <Form handleFormSubmit={ this.handleFormSubmit } 
          handleInputChange={ this.handleInputChange }
          newLaptopTag={ this.state.laptopTag}
          newStudentName={ this.state.studentName }
          newStudentGrade={this.state.studentGrade}
          newStatus={this.state.status}
           /><br/><br/>
        <Table items={ this.state.items }/>
      </div>
    );
  }
}

该方案的数据仅存储在当前使用的浏览器中,清理浏览器缓存、更换浏览器或设备都无法读取数据,仅适合单人单设备临时使用的场景


方案2:多设备共享存储(适合学校正式场景使用)

如果需要多终端访问数据、避免清理缓存导致数据丢失,需要搭配后端服务和数据库实现,核心逻辑如下:

  • 搭建后端服务,开发两个基础接口:一个用于提交新增设备记录,一个用于查询所有已存储的记录
  • 后端将数据存储在MySQL、MongoDB这类持久化数据库中
  • App组件初始化时,调用查询接口拉取所有记录初始化items
  • 表单提交时,先调用新增接口把数据传到后端存储成功后,再更新本地state

该方案支持跨设备、跨浏览器访问数据,数据安全性更高,符合学校正式使用的需求


内容的提问来源于stack exchange,提问作者NaPared

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:45:02