почему я не получаю фактическое состояние с редуксом? - PullRequest
0 голосов
/ 28 марта 2020

Я получаю состояние для заполнения моей формы, но это не фактическое состояние, по-видимому, это начальное состояние.

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>
...

Тем не менее, мой излишек chrome DevTools показывает фактическое состояние ( правильный) почему разница? enter image description here

enter image description here

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Выберите 1 источник правды для вашего штата - если вы считаете, что он должен жить в redux, затем выберите штат из избыточного числа и НЕ объединяйте его с локальным useState:

import React from "react";
import { useSelector } from "react-redux";

const Invoice = () => {
  const userAuth = useSelector(state => state.login);
  console.log(userAuth);
}
0 голосов
/ 28 марта 2020

Если вы хотите регистрировать текущее состояние (из-за редукса), я думаю, вы должны использовать подписка (store.subscribe(...)) и поместить его в useEffect hook.

Примерно так :

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

Вы видите разницу между инструментами redux dev и вашим conslole.log, потому что с store.getState () вы получаете состояние, в котором он находился, когда был смонтирован ваш компонент. С подпиской вы получаете уведомление в любое время, когда какое-либо действие отправляется, состояние изменяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...