javascript - 如何在 ReactJS 的功能组件中声明一个变量

标签 javascript reactjs react-hooks constants state

我有一个变量“myVar”(不是一个状态)

const myComponent = () => {
  const [myState, setMyState] = useState(true)
  const myVar = false

  return <button onClick={() => {myVar = true} >Click here</button>

正如所写,当组件被重新渲染时,myVar 被重新初始化...我想让变量保持它以前的值。我怎样才能得到这种行为?

我找到的解决方案是:

解决方案 1:在组件外部(但不在组件范围内)初始化变量

let myVar = 'initial value';
const myComponent = () => {
  ....
  // myVar is updated sometimes when some functions run
}

解决方案 2:声明组件 prop(但公开)

const myComponent = ({myVar = true) => {
  ....
}

解决此问题的推荐方法是什么?

最佳答案

React 文档建议使用 useRef保持任意可变值。所以,你可以这样做:

// set ref
const myValRef = React.useRef(true);

// ...

// update ref
myValRef.current = false;

关于javascript - 如何在 ReactJS 的功能组件中声明一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64374823/

相关文章:

async-await - 类型错误 : Cannot read property 'type' of undefined (redux toolkit)

reactjs - 删除事件监听器手动 react 钩子(Hook)

javascript - 提交时清除输入字段

javascript - 范围错误: Maximum call stack size exceeded Angular 5 Router

javascript - 从javascript中的函数访问变量?

javascript - React + Redux 代码中存在 TypeError (0 , _ColorReducer.color) is not a function 错误

javascript - 从 Material ui 组件中提取样式

css - 如何在带有 borderRadius 的 View 组件中放置两个 View 组件?

javascript - 从 JSON 创建动态表单

javascript - Aurelia JS - 迭代子元素(kendo UI)?