Как установить состояние загрузки для реакции js с редуксом

я использую редукцию и хочу показывать состояние загрузки своего приложения всякий раз, когда мое приложение получает данные из API и всякий раз, когда у меня есть нулевые данные в моих редукторах
я пробовал это, но у меня не загружается текст

    if (this.props.isSignedIn === true) {
      return <div
        style = {{ textAlign: "right" }}>
        <Link to='/streams/new' className='ui button primary'>
          create new stream
      </Link>
      </div>
    }
    if (this.props.isSignedIn === false) {
      return <div style = {{ fontSize: '30px' }}>Not a user? sign in now, it's free </div>
    }
    if (this.props.isSignedIn ===null) {
      <div>loading...</div>
    }
  }  

вот подключение и функция mapstatetoprops

const mapStateToProps = state => {
  return {
    streams: Object.values(state.streams),
    userId: state.auth.userId,
    isSignedIn: state.auth.isSignedIn
  };
};

export default connect(
  mapStateToProps,
  { fetchStreams }
)(StreamList);

а вот редуктор

import { SIGN_IN, SIGN_OUT } from '../actions/types';

const INTIAL_STATE = {
  isSignedIn: null,
  userId: null
};

export default (state = INTIAL_STATE, action) => {
  switch (action.type) {
    case SIGN_IN:
      return { ...state, isSignedIn: true, userId: action.payload };
    case SIGN_OUT:
      return { ...state, isSignedIn: false, userId: null };
    default:
      return state;
  }
};

вот действия

export const signIn = userId => {
  return {
    type: SIGN_IN,
    payload: userId
  };
};

export const signOut = () => {
  return {
    type: SIGN_OUT
  };
};

ПРИМЕЧАНИЕ:

in cases true and false works fine except for null

Вы вообще устанавливаете переменную isSignedIn в null?

szczocik 15.12.2020 13:55

да, сначала он нулевой и со временем меняется

louis Schneider 15.12.2020 14:21

также опубликуйте свои избыточные действия и редуктор, чтобы помочь вам лучше

Appy Mango 15.12.2020 14:39

я обновил свой вопрос, кстати, он отлично работает в истинных и ложных случаях

louis Schneider 15.12.2020 15:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
121
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обычно это делается путем установки свойства «загрузка» в хранилище и добавления дополнительного действия, такого как «SIGN_INIT».

Таким образом, ваш редуктор будет выглядеть так:


const INTIAL_STATE = {
  isSignedIn: null,
  loading: false,
  userId: null
};


export default (state = INTIAL_STATE, action) => {
  switch (action.type) {
    case SIGN_INIT:
      return { ...state, loading: true };
    case SIGN_IN:
      return { ...state, isSignedIn: true, loading: false, userId: action.payload };
    case SIGN_OUT:
      return { ...state, isSignedIn: false, loading: false, userId: null };
    default:
      return state;
  }
};

Поэтому, когда вы пытаетесь войти или выйти, сначала вы отправляете SIGN_INIT, который устанавливает для «загрузки» значение true. Всякий раз, когда запрос завершен, действия SIGN_IN\SIGN_OUT будут обновлять вашу «загрузку» в магазине, и компонент будет уведомлен о завершении загрузки.

я только определил значение загрузки и установил его по умолчанию на true, всякий раз, когда вызываются действия, я меняю значение на false, отличается ли оно?

louis Schneider 15.12.2020 18:59

Другие вопросы по теме