首页 > 解决方案 > 将全局状态复制到组件本地状态

问题描述

我正在尝试将全局状态复制到组件本地状态。我正在使用带有钩子的 Redux。

这是我的代码,但本地状态正在返回一个空的对象。

  const transaction = useSelector((state) => state.data.transaction)
  const [localTransaction, setLocalTransaction] = useState(transaction)

这是我的全局状态(事务)的控制台日志 在此处输入图像描述

谢谢!

标签: reactjsreduxreact-hooks

解决方案


的默认值useState是在挂载时设置的,因此如果此时存储中没有任何内容,它将是无效的,对其所做的任何更改也不会反映。如果您有正当理由将其再次存储在本地状态中,那么您需要执行以下操作:

const transaction = useSelector((state) => state.data.transaction)
const [localTransaction, setLocalTransaction] = useState(null)

useEffect(() => {
  if (!localTransaction && transaction) {
    setLocalTransaction(transaction);
  }
}, [transaction, localTransaction])

推荐阅读