将全局状态复制到组件局部状态

时间:2020-04-21 14:46:22

标签: reactjs redux react-hooks

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

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

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

这是我的全局状态(事务)的控制台日志 enter image description here

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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