如何解决为什么我的输入组件内的 setSetsValue 没有增加?
我想增加我创建的输入组件内的值,它只需要一次点击就可以工作,然后它只是在启动 pressHandler 的每个按钮按下时在 5 和 6 之间来回切换。为什么会这样?
这可能是关于 defaultValues 数组本身的问题还是我的 setSetsValue 完全错误?
不应该在每次按下按钮后增加 defaultValues[0].sets.totalSets 的值吗?或者我错了想一些荒谬的事情。
感谢您的任何帮助!
代码:
int[] one = oneD.stream ().mapToInt (Integer::intValue).toArray ();
我的输入组件:
let defaultValues = [
{
sets: { totalSets: "4" },work: { min: "00",sec: "50" },rest: { min: "00",sec: "30" },},];
const [setsValue,setSetsValue] = useState(defaultValues[0].sets.totalSets);
const pressHandler = () => {
defaultValues[0].sets.totalSets =
parseInt(defaultValues[0].sets.totalSets) + 1;
setSetsValue(defaultValues[0].sets.totalSets.toString());
};
解决方法
看这个例子
let valueA = 1;
console.log(valueA); //log value
const handler = () => {
valueA = valueA + 1; //increase value
setAnyStateValue(); //update state
};
如果你调用 handler()
100 次 log results is : 1 !!!
为什么日志不增加???
因为 handler()
将通过函数 setAnyStateValue()
更新状态,每次更新状态时,组件 rerender again
和 valueA 再次声明 let valueA = 1;
如何解决这个问题
解决方案一
setSetsValue(x => x + 1); //this will update value based on last value plus one
方案二
const pressHandler = () => {
setSetsValue(parseInt(setsValue) + 1);
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。