Reactjs 为什么我没有得到redux的实际状态?

Reactjs 为什么我没有得到redux的实际状态?,reactjs,redux,Reactjs,Redux,我正在获取填充表单的状态,但它不是实际状态,显然是初始状态 import React from "react"; import store from "../store"; const Invoice = () => { console.log(store.getState().login); return ( <div className="span7"> <h4 className="title"> <s

我正在获取填充表单的状态,但它不是实际状态,显然是初始状态

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>
...
然而,我的redux chrome开发工具显示的是正确的实际状态,为什么会有差异?


如果您想从redux记录当前状态,我认为您应该使用store.subscribe。。。并将其投入使用

大概是这样的:

useEffect(() => {
  const subscription = store.subscribe(() => {
        console.log(store.getState().login);
      });
  return () => { subscription() } // clear out subscription when component unmounts
},[])

您看到了redux开发工具和conslole.log之间的差异,因为使用store.getState可以获得组件安装时的状态。使用subscribe,当某个操作被调度或状态发生更改时,您会收到通知

确定你所在州的一个真相来源-如果你认为它应该存在于redux,那么从redux中选择该州,不要将其与本地useState组合:


商店看起来怎么样?…标题表明redux有问题。事实并非如此。在React呈现期间执行带有console.log的代码时,redux状态与logged状态完全相同。但是,如果您从未告诉React在状态更改时重新渲染(使用React-redux或),那么这正是我们所期望的;从react redux导入{useSelector};常量发票==>{const[userAuth,setUserAuth]=useStateuseSelectorstate=>state.login;console.loguserAuth;但结果相同!嗯,useStateuseSelector…??请问您试图实现什么?它实际上是做什么的,它将初始状态设置为选择器中的值,然后它将永远不会修改本地状态,因为您从未调用setUserAuth。您提出lo的原因是什么w级API而不是事实上的标准connect或useSelector?@Aprillion从文章作者提出的问题中,我无法判断他为什么不使用connect with mapState或useSelector。连接Invoice或使用useSelector肯定比使用低级API好,但问题实际上是从低级API开始的,为什么不这样做工作。所以我建议使用同一级别的API来完成他想要完成的任务。嗯,我明白你的理由。我不同意-即使你想假设问这个问题的低声誉用户具有高水平的能力,为什么你会假设这个公共问答页面的所有访问者都知道足够的知识来认可你的假设?为什么不同时提供这两个呢解决方案-您认为最好的解决方案,如果最好的解决方案通常不适用于特定情况,那么解决方案是什么?
import React from "react";
import { useSelector } from "react-redux";

const Invoice = () => {
  const userAuth = useSelector(state => state.login);
  console.log(userAuth);
}