首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新redux片?

如何更新redux片?
EN

Stack Overflow用户
提问于 2022-10-20 08:27:37
回答 1查看 28关注 0票数 1

我有一个问题,我不能用这个代码更新用户的黄金。我想更新用户的黄金从他目前的黄金到当前黄金+ 100每10秒。

这个代码不起作用,我想我误解了什么,但我想不出是什么!我想在离开那页的时候把金子送出去。我的意思是,我有我的当前黄金显示在标题中,例如,在页面中,我可以看到每10秒从0我的黄金更新.一旦我离开页面的标题,我想让我的当前黄金+黄金收入。

在我的组件中的useEffect

代码语言:javascript
复制
const [chrono, setChrono] = useState<number>(0);
const user: any = useSelector((state: any) => state.user);
const dispatch = useDispatch();
const [gold, setGold] = useState(0);

useEffect(() => {
  const updateGold = setInterval(() => {
    setGold((gold) => gold + 100);
  }, 10000);

  return () => {
    dispatch(
      userSlice.actions.update({
        ...user,
        gold: user.gold + gold,
      })
    );
    clearInterval(updateGold);
  };
}, []);

减速机

代码语言:javascript
复制
update: (state: any, { payload }) => {
  console.log("action =>", payload);
  return {
    ...state,
    ...payload,
  };
},
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-20 08:43:03

我认为这样做更有意义,并且更简单的做法是在间隔上分派更新操作,而不是稍后更新本地状态和同步状态。

示例:

代码语言:javascript
复制
const dispatch = useDispatch();

useEffect(() => {
  const updateGold = setInterval(() => {
    dispatch(
      userSlice.actions.addGold(100);
    );
  }, 10000);

  return () => {
    clearInterval(updateGold);
  };
}, []);

切片

代码语言:javascript
复制
addGold: (state: any, { payload }) => {
  state.gold = state.gold + payload;
},
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74136666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档