首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >跨react组件的可变存储更新

跨react组件的可变存储更新
EN

Stack Overflow用户
提问于 2022-04-17 11:46:53
回答 2查看 34关注 0票数 0

这是下一个/反应项目。文件夹结构:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
components > Navbar.js

pages > index.js (/ route)(includes Navbar)
      > submitCollection.js (/submitCollection)(includes Navbar)

我试图让用户提交一个特定的字符串作为输入,并将其存储在帐户变量中。Navbar.js

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const Navbar = ({}) => {
    
    const [account,setAccount] = useState()
    
    const handleClick = () => {
        setAccount(randomNumberThatIHaveGenerated)
    }
    ...
    return (
        <Link href="/">home</Link>
        <Link href="/submitCollection">submit collection</Link>
        ...
        <button onClick={handleClick} >press to set account</button>
        ...
        {account?(<p>{account}</p>):(<p>u need to set an accout</p>)}
    )
}

当我访问家庭使用导航栏链接,帐户再次设置为未定,我需要再次按下按钮,以设置它。怎样才能使字符串保持不变。就像坚持在肚脐上

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-17 12:16:27

您可以使用localstorageuseEffect解决这个问题。

将这段代码添加到您的工作中就可以了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const [account,setAccount] = useState(localStorage.getItem('account') ?localStorage.getItem('account') : null)


useEffect(()=>{
localstorage.setItem(account)
},[account])

例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const [account,setAccount] = useState(localStorage.getItem('account') ?localStorage.getItem('account') : null)
    useEffect(()=>{
localStorage.setItem('account',account)
},[account])
    const handleClick = () => {
        setAccount(randomNumberThatIHaveGenerated)
    }

希望它能帮上忙

票数 0
EN

Stack Overflow用户

发布于 2022-04-17 11:57:43

useState不是持久的,它绑定到它的组件上,为了使它持久,您必须使用localStorage

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const [account,_setAccount] = useState();
const setAccount = (val) => {
  _setAccount(val);
  localStorage.setItem('account', val);
}

useEffect(() => {
  const storedAccount = localStorage.getItem('account');
  if (storedAccount) _setAccount(storedAccount);
}, [])
    
const handleClick = () => {
  setAccount(randomNumberThatIHaveGenerated)
}

组件呈现时调用useEffect,检查存储帐户并显示它。

注意我们是如何重新实现setAccount的,这样每次调用它时,我们都会更新localStorage。

您还可以使用这个逻辑创建一个自定义钩子,这样组件看起来就更干净了。或者更好的是,使用类似于使用状态持久化的东西

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71904945

复制
相关文章
react跨组件传值
一层一层的传递,app组件通过props一层一层的往下传给ProfileHeader组件,期间通过了Profile组件,但Profile组件并不需要props。
hss
2022/02/25
6150
React-跨组件通讯
如果我们想在爷爷组件当中给儿子进行通讯,那么该如何进行实现呢,首先来看第一种方式就是一层一层的传递,为了方便观察这里博主就直接都定义在一个文件当中, 先来看从爷爷给到儿子方法的这么一个过程:
杨不易呀
2023/09/30
1850
react 学习(三) 组件更新
我们上一节了了解了函数式组件和类组件的处理方式,本质就是处理基于 babel 处理后的 type 类型,最后还是要处理虚拟 dom。本小节我们学习下组件的更新机制。
测不准
2022/04/08
1.1K0
react 学习(三) 组件更新
React-跨组件通讯-events
经过博主前面的介绍我们知道, 子父组件之间通讯, 是通过回调函数的方式实现的,兄弟组件之间通讯, 也是通过父组件, 通过回调函数的方式,但是如果通过回调函数, 传统的方式我们需要一层一层的传递, 比较复杂,所以我们可以借助一个第三方库 (events) 来实现跨组件事件通讯。
杨不易呀
2023/09/30
3490
React-跨组件通讯-context
在之前的通讯代码当中,发现一个问题,如果传递数据层次太深, 一层一层的传递比较麻烦, 所以 React 也提供了其它的解决方案:
杨不易呀
2023/09/30
2320
react源码分析:组件的创建和更新
因为初始化的源码文件部分所涵盖的内容很多,包括创建渲染、更新渲染、Fiber树的创建与diff,element的创建与插入,还包括一些优化算法,所以我就整个的React执行流程画了一个简单的示意图。
flyzz177
2022/10/19
1.2K0
react源码分析--组件的创建和更新
因为初始化的源码文件部分所涵盖的内容很多,包括创建渲染、更新渲染、Fiber树的创建与diff,element的创建与插入,还包括一些优化算法,所以我就整个的React执行流程画了一个简单的示意图。
flyzz177
2022/12/14
1.2K0
react源码之组件的创建和更新
因为初始化的源码文件部分所涵盖的内容很多,包括创建渲染、更新渲染、Fiber树的创建与diff,element的创建与插入,还包括一些优化算法,所以我就整个的React执行流程画了一个简单的示意图。
flyzz177
2022/12/05
1.1K0
React源码学习入门(十一)React组件更新流程详解
上一篇文章提到最后更新组件是走到了performUpdateIfNecessary方法,让我们来看一看它的实现:
孟健
2022/12/19
6950
React源码学习入门(十一)React组件更新流程详解
比immutable更简洁的数据不可变更新库~React immutability
  之前项目中遇到数据拷贝、引用之间数据层级嵌套过深,拷贝的值相互之间影响的问题,后来引入了immutability-helper,使用过程中的一些总结,跟大家分享下,至于为什么不是immutable,请看下文分解,这里是@IT·平头哥联盟,我是首席填坑官——苏南。
苏南
2018/12/24
1.3K0
比immutable更简洁的数据不可变更新库~React immutability
react源码分析:组件的创建和更新2
因为初始化的源码文件部分所涵盖的内容很多,包括创建渲染、更新渲染、Fiber树的创建与diff,element的创建与插入,还包括一些优化算法,所以我就整个的React执行流程画了一个简单的示意图。
flyzz177
2023/01/04
9210
小前端读源码 - React组件更新原理
年后一直忙于工作,导致一直没有去继续阅读React的更新原理。今天我们接着往下阅读吧!
LamHo
2022/09/26
6220
小前端读源码 - React组件更新原理
从0实现React 系列(二):组件更新
假设React是你日常开发的框架,在日复一日的开发中,你萌生了学习React源码的念头,在网上一顿搜索后,你发现这些教程可以分为2类:
一只图雀
2020/06/28
1.5K0
从0实现React 系列(二):组件更新
React中传入组件的props改变时更新组件的几种实现方法
我们使用react的时候常常需要在一个组件传入的props更新时重新渲染该组件,常用的方法是在componentWillReceiveProps中将新的props更新到组件的state中(这种state被成为派生状态(Derived State)),从而实现重新渲染。React 16.3中还引入了一个新的钩子函数getDerivedStateFromProps来专门实现这一需求。但无论是用componentWillReceiveProps还是getDerivedStateFromProps都不是那么优雅,而且容易出错。所以今天来探讨一下这类实现会产生的问题和更好的实现方案。
MudOnTire
2019/05/26
5.2K0
移动跨平台ReactNative存储数据组件AsyncStorage【13】
在 0.60 版本之前,这个组件是内置的,0.60 版本把它移到了 react-native-community/react-native-async-storage。
江一铭
2022/06/17
3.2K0
React报错之无法在未挂载的组件上执行React状态更新
原文链接:https://bobbyhadz.com/blog/react-cant-perform-react-state-update-on-unmounted-component[1]
chuckQu
2022/08/19
2.3K0
react 跨级组件传参方式 context方式的传参
//首先新建一个公共js context.js 解构出一个Provider和Consumer并导出 import React,{createContext} from 'react' const {Provider,Consumer} =createContext() export { Provider,Consumer } //在需要用这对组件的页面再分别引入Provider,Consumer 根组件 import React, { Component } from 'react'; imp
lilugirl
2020/10/13
2K0
react源码分析:组件的创建和更新_2023-02-28
因为初始化的源码文件部分所涵盖的内容很多,包括创建渲染、更新渲染、Fiber树的创建与diff,element的创建与插入,还包括一些优化算法,所以我就整个的React执行流程画了一个简单的示意图。
flyzz177
2023/02/28
5230
react源码分析:组件的创建和更新_2023-02-07
因为初始化的源码文件部分所涵盖的内容很多,包括创建渲染、更新渲染、Fiber树的创建与diff,element的创建与插入,还包括一些优化算法,所以我就整个的React执行流程画了一个简单的示意图。
flyzz177
2023/02/07
5560
React - 组件:类组件
他有自己的生命周期也有react给他提供的一些内置函数方法。有自己的this和状态。
xing.org1^
2019/12/11
2K0
React - 组件:类组件

相似问题

如何在React中存储跨组件的可变状态

10

跨组件更新React配置

119

跨组件更新上下文-react.js

19

REACT使用本地存储来更新组件

37

更新存储后,React中的useEffect未更新组件

121
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文