javascript - 更新后无法访问计数器

标签 javascript reactjs react-native react-hooks

我想通过点击一个按钮开始一个intervalinterval 在这里开始,但是我无法访问 counter 的值。因为当计数器等于 5 时,间隔应该停止。

例子如下:

let interval = null;
const stateReducer = (state, value) => value;

function App(props) {

  const [counter, setCounter] = useReducer(stateReducer, 0);

  const increment = () => {

    interval = setInterval(() => {
      setCounter(counter + 1);
      if (counter === 5) clearInterval(interval);
      console.log(counter);
    }, 1000);

  };

  return (
    <div>
      <p>{counter}</p>
      <button className="App" onClick={increment}>
        Increment
      </button>
    </div>
  );
}

您可以在 codesandbox 上运行此代码

最佳答案

  1. const stateReducer = (state, value) => value; 更改为 const stateReducer = (state, value) => state+value;
  2. 在函数外创建一个变量let current_counter = 0;
  3. 像这样改变你的增量函数
current_counter = counter;
const increment = () => {
   interval = setInterval(() => {
      setCounter(1);
      if (current_counter === 5) clearInterval(interval);
      console.log(current_counter);
    }, 1000);
};
  1. 完成

关于javascript - 更新后无法访问计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58508685/

相关文章:

reactjs - REACT - 如何将 URL 字符串替换为 <a> 元素并正确渲染它

javascript - 如何使用 react 动态导入组件?/动态导入

reactjs - React.Children.only 期望收到单个 React 元素子错误

react-native - 如何使用 wix react-native-navigation 获得 bottomTab 按下 Action ?

ios - 如何在不使用包的情况下在 react-native 应用程序中显示启动/启动屏幕? (特别是 iOS)

javascript从函数中获取值

javascript - 在函数内声明变量返回未定义

listview - 如何在 native react 中更改 ListView 中按钮的文本?

javascript - 为什么 NuGet 会安装两份 JavaScript 包?

javascript - 如何用 Jest 模拟 S3?