Javascript 反应功能组件使用变量(非状态)

Javascript 反应功能组件使用变量(非状态),javascript,reactjs,Javascript,Reactjs,对于React类组件,我使用一些变量(而不是this.state)来帮助我的控制逻辑。示例:this.isPressBackspace=false并且当我设置变量时,不会使组件重新渲染(例如:this.isPressBackspace=true) 这在类组件中工作得非常好,但是当我改为函数组件时,我不知道该将这个放在哪里 下面是我在codesandbox中的示例。 useRef返回一个可变的ref对象,其.current属性初始化为传递的参数(initialValue)。返回的对象将在组件的整个

对于React类组件,我使用一些变量(而不是
this.state
)来帮助我的控制逻辑。示例:
this.isPressBackspace=false
并且当我设置变量时,不会使组件重新渲染(例如:
this.isPressBackspace=true

这在类组件中工作得非常好,但是当我改为函数组件时,我不知道该将
这个放在哪里

下面是我在codesandbox中的示例。

useRef返回一个可变的ref对象,其.current属性初始化为传递的参数(initialValue)。返回的对象将在组件的整个生命周期内持续存在

const isPressBackspaceRef=React.useRef(false);
const keyDownPositionRef=React.useRef({});
const onKeyDown=(e)=>{
//这是错误的语法
//此键为.keyDownPosition或let键为downposition
keyDownPositionRef.current={
开始:e.target.selectionStart,
结束:e.target.selectionEnd
};
开关(电子钥匙){
案例“Backspace”:
isPressBackspaceRef.current=true;//这是错误的语法????
打破
违约:
打破
}
};
const onChange=(e)=>{
const{end}=keyDownPositionRef;
if(isPressBackspaceRef.当前){
const length=end-e.target.selectionEnd;
警报(`youdelete${length}字符`);
}
isPressBackspaceRef.current=假;
};

根据我的经验,在处理功能组件时,您不使用this关键字。相反,您使用像useState这样的钩子。 查看以下视频了解如何开始使用挂钩:

您是否尝试改用了?您必须使用useState并在此处修改状态我已转换了您的代码请看一看@谢谢,但我不想使用useState。你知道其他解决办法吗?