在ReactJS中使用本地存储

用户名

我正在制作一个配方盒项目,我有一个配方状态,其中包含一组配方对象。

我使用saveToLocal函数将当前状态保存到本地存储中,如下所示:

 saveToLocal = () => {
 const local = this.state.recipe;
 localStorage.setItem("recipe", JSON.stringify(local));
}

然后将其传递回添加,编辑或删除新配方的函数

 addNewRecipe = (newRecipe) => {
  this.setState({
  recipe: [...this.state.recipe,newRecipe]
  }, this.saveToLocal);
}

 editRecipe = (recipe) => {
   let selectedRecipe =this.state.recipe.find(obj=>obj.count==recipe.count)
   let editedRecipe = Object.assign(selectedRecipe,recipe);
   this.setState(Object.assign(this.state.recipe,editedRecipe),this.saveToLocal)
}

deleteRecipe = (recipe) => {
  let arr = this.state.recipe.filter(obj => obj.count !== recipe.count);
}

但是,这在我刷新应用程序时不起作用,但是当我在检查工具中检查本地存储时,该本地存储仍然具有配方数据。解决此问题的方法是什么?

谢谢

devserkan

如果我理解正确,则希望在刷新时保存已保存的配方。您应该使用componentDidMount并从localStorage获取配方,然后根据此设置状态。

componentDidMount() {
    const recipe = JSON.parse( localStorage.getItem( "recipe" ) );
    this.setState( { recipe } );
}

您可以检查配方并有条件地渲染组件:

render() {
    if( !this.state.recipe.length ) {
        return <p>No recipe</p>;
        // or you can use a spinner here
    }
    return { how you handle your recipe here, map it etc. }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JavaScript中使用本地存储

在脚本 src 中使用本地存储值

在Elixir中使用本地存储库?

在浏览器中使用本地存储:删除项目

在PhoneGap中使用JsPdf在本地存储上编写PDF

在 redux 存储中使用本地状态作为输入值

在启动Clojure中使用本地Maven存储库

如何在本地存储中使用JWT保持用户登录?

如何删除阵列中使用本地存储保存的对象?

在 React 中使用本地存储隐藏一些元素

在Vuejs中使用v-html渲染本地存储的图像

AngularJS:使用本地存储

在EKS中使用本地存储的持久性存储(EBS)进行链接

嵌入可访问本地存储的reactjs应用

如何将本地存储与apollo-client和reactjs一起使用?

在球拍中使用本地

使用SBT将工件发布到本地Maven存储库并在Gradle项目中使用

如何使用Go在Google Cloud Functions中使用供应商中的本地存储库

将令牌存储在 cookie 或 reactjs 的本地存储中

在混合应用程序开发中使用本地存储作为“本地数据库”-危险还是有用?

如何在Gradle中使用本地Maven存储库中的jar

如何在我的 Maven 本地存储库中使用 gradle 发布现有的 aar?

Vue.JS-如何在Vue.JS中使用本地存储

我应该在Electron中使用本地存储进行数据库配置吗?

当.config定义中包含本地存储时,为什么不能在我的.config中使用localStorage?

初始开发期间如何在Clojure库中使用本地存储库?

UWP Windows-10:如何在商店应用程序中使用线程本地存储API

如何在本地存储,IMAP和即时推送新电子邮件中使用Mutt?

如何在chrome的新选项卡中使用本地存储保存变量