繁体   English   中英

React/Redux 如何将值从 redux 存储设置到组件的 state

[英]React/Redux How to set value from redux store to state of component

我需要将收到的数据从 redux 存储更改为另一个变量(然后修改它)。 目前,我在 API 调用后从 store 接收数据,它存储为officeData offices 有谁可以解决这个问题?
这是我的代码:

  const dispatch = useDispatch();
  const offices = useSelector((state) => state.office.offices)
  const [officeData, setOffices] = useState(offices);
  debugger;
  useEffect(()=> {
    dispatch(getOffices());
    setOffices(offices);
    debugger
  }, [dispatch])

如果您甚至没有输入您的 useEffect 我认为这是因为您将dispatch作为依赖项提供。

组件挂载时触发效果,组件更新(prop 或 state)时也会触发效果。 所以你可以做这样的事情:

import { useEffect } from "react";

const dispatch = useDispatch();
const offices = useSelector((state) => state.office.offices);
const [officeData, setOffices] = useState(undefined);
const [didMount, setDidmount] = useState(false);

// When component mount, load your Offices data
useEffect(() => {
  if(!didMount){
    dispatch(getOffices());
    setOffices(offices);
  } else {
    setDidmount(true);
  }
});

useEffect(() => {
  if(didMount) {
    // When you update officeData, do your thing
  }
}, [officeData]);

我不知道 useSelector 的行为,但我猜它不会触发渲染。 也许你可以有一个 useEffect 与 office 作为依赖,只是要小心不要循环!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM