假设我们设置了一个上下文提供程序,以及一些初始数据属性值.

在这个过程中的某个地方,假设消费者修改了这些属性.

重新加载页面时,这些更改将丢失.保存数据的最佳方式是什么,这样我们就可以保留这些数据修改?除了本地存储,还有其他方法吗?

推荐答案

是的,如果您希望数据在重新加载过程中保持不变,您可以 Select 将该信息存储在服务器端(通过api调用)或浏览器存储中(本地存储、会话存储、cookie).您希望使用的选项取决于您希望达到的持久性级别.无论存储 Select 如何,它看起来都可能与

const MyContext = React.createContext(defaultValue);

class Parent extends React.Component {
  setValue = (value) => {    
    this.setState({ value });
  }

  state = {
    setValue: this.setValue,
    value: localStorage.getItem("parentValueKey")
  }

  componentDidUpdate(prevProps, prevState) {
    if (this.state.value !== prevState.value) {
      // Whatever storage mechanism you end up deciding to use.
      localStorage.setItem("parentValueKey", this.state.value)
    }
  }

  render() {
    return (
      <MyContext.Provider value={this.state}>
        {this.props.children}
      </MyContext.Provider>
    )
  }
}

Reactjs相关问答推荐

在Reaction中测试条件组件

面对动画警告:未指定`useNativeDriver`.这是必需的选项,并且必须在REACT本机中显式设置为`true`或`False`

如何通过回调函数获取多个值?

在 golang 服务器中刷新或直接 url 路径时响应 404

获取 不能显示为 的后代.错误,但不太确定如何构建我的代码以避免此警告

ReactJS 中的图像加载顺序

React Router v6 路径中的符号

需要先填写依赖输入字段,以便其他人工作

带有 webpack 错误多个文件匹配路由名称的 Expo-router.无法Bundle 或部署应用程序

React v6 中的公共和私有路由

React Native Realm 应用程序在发布构建后崩溃

如何检索包含动态段的未解析路径?

将路径数组传递给Route会引发错误

在嵌套的 Stack Navigator 中的 BottomTabBar 中导航会导致比以前更多的渲染

当状态改变时如何执行一些动作,但只针对第一次更新?

未捕获的错误:操作必须是使用 redux/toolkit 的普通对象

为什么我在运行一些 npm react 命令时会收到这些警告?

为什么重新渲染不会影响 setTimeout 的计数?

在react 路由dom版本6中的组件内添加路由

React - useParams() 不会失败 null / undefined 判断