为什么我没有通过 redux 获取实际状态?
2020-03-28
63
我获取了填充表单的状态,但这不是实际状态,显然它是初始状态。
import React from "react";
import store from "../store";
const Invoice = () => {
console.log(store.getState().login);
return (
<div className="span7">
<h4 className="title">
<span className="text">
<strong>Datos</strong> de facturación
</span>
</h4>
...
2个回答
确定你的状态的 1 个事实来源 - 如果你认为它应该存在于
redux
中,那么从 redux 中选择状态,并且不要将其与本地
useState
相结合:
import React from "react";
import { useSelector } from "react-redux";
const Invoice = () => {
const userAuth = useSelector(state => state.login);
console.log(userAuth);
}
Aprillion
2020-03-28
如果您想记录当前状态(来自 redux),我认为您应该使用
subscription
(
store.subscribe(...)
) 并将其放入
useEffect
钩子中。
类似这样的内容:
useEffect(() => {
const subscription = store.subscribe(() => {
console.log(store.getState().login);
});
return () => { subscription() } // clear out subscription when component unmounts
},[])
您会看到 redux dev tools 和您的 conslole.log 之间的差异,因为使用 store.getState() 时,您会在组件安装时获取状态。使用 subscribe,您会在分派某些操作并更改状态时收到通知。
Danko
2020-03-28