Как я могу получить состояние от селектора после свежей страницы?

Интересно, может ли это быть объяснено лучше, чем статья в Википедии.

Основная проблема, которую вы пытаетесь решить с помощью представления двух дополнений, - это проблема сохранения отрицательных целых чисел.

Сначала рассмотрим целое число без знака, записанное в 4 бита. У вас может быть следующее

0000 = 0
0001 = 1
0010 = 2
...
1111 = 15

Они неподписанны, потому что нет указания на то, являются ли они отрицательными или положительными.

Знак Величина и избыточное обозначение

Чтобы сохранить отрицательные числа, вы можете попробовать несколько вещей. Во-первых, вы можете использовать нотацию знака знака, которая назначает первый бит в качестве знакового бита для представления +/- и остальных бит для представления величины. Таким образом, используя 4 бита снова и предполагая, что 1 означает - и 0 означает +, тогда у вас есть

0000 = +0
0001 = +1
0010 = +2
...
1000 = -0
1001 = -1
1111 = -7

. Итак, вы видите проблему там? У нас положительный и отрицательный 0. Большая проблема заключается в добавлении и вычитании двоичных чисел.

Что такое

0010
1001 +
----

?

Другая система - превышение нотации . Вы можете хранить отрицательные числа, вы избавляетесь от двух проблем с нулями, но сложение и вычитание остаются трудными.

Итак, идет два дополнения. Теперь вы можете хранить положительные и отрицательные целые числа и выполнять арифметику с относительной легкостью. Существует несколько способов преобразования числа в дополнение к двум. Вот один из них.

Преобразование десятичного в дополнение к двум

  1. Преобразование числа в двоичный (пока игнорируйте знак), например. 5 - 0101, а -5 - 0101
  2. Если число положительное, значит, вы закончили. например 5 - 0101 в двоичном формате с использованием двухкомпонентной нотации.
  3. Если число отрицательное, то 3.1 найти дополнение (инвертировать 0 и 1), например. -5 - 0101, поэтому найти дополнение 1010 3.2 Добавить 1 в дополнение 1010 + 1 = 1011. Следовательно, -5 в дополнении 2-го порядка 1011.

Итак, что, если вы хотите do 2 + (-3) в двоичном формате? 2 + (-3) - -1. Что бы вы сделали, если бы вы использовали значение знака для добавления этих чисел? 0010 + 1101 =?

Используя два дополнения, рассмотрим, насколько это было бы легко.

 2  =  0010
 -3 =  1101 +
 -------------
 -1 =  1111

Преобразование двух дополнений в десятичные

Преобразование 1111 в десятичный: / g25]

  1. Число начинается с 1, поэтому оно отрицательно, поэтому мы находим дополнение 1111, которое равно 0000.
  2. Добавьте 1 к 0000, и получим 0001.
  3. Преобразование 0001 в десятичный, что равно 1.
  4. Применить знак = -1.

Tada!

1
задан calev 27 March 2019 в 20:24
поделиться

1 ответ

Прежде всего, постарайтесь не использовать метод componentWillMount, поскольку он не рекомендуется в React ( https://reactjs.org/docs/react-component.html#unsafe_componentwillmount )

[ 114] Я не понимаю, почему это не сработает при обновлении. Вам может не понадобиться ваш селектор как функция, и, возможно, вам нужно значение по умолчанию, чтобы гарантировать достоверность карты, которую вы делаете в React (может, в этом проблема?)

const makeSelectSchools = createSelector(
  selectSchoolsContainerDomain, // What is this doing? Getting the state of the previous reducer right?
  schoolState => schoolState.get('schools') || [],
);

И затем вызовите его в контейнере:

const mapStateToProps = createStructuredSelector({ schools: makeSelectSchools });

Вы уверены, что в вашей консоли больше нет журналов? Или в инструментах Redux для разработчиков? Его довольно сложно отладить, и я лично не вижу причин, по которым ваше приложение будет работать только во время первой загрузки (если вы не управляете кешем).

Надеясь, что эти маленькие отзывы помогут вам сузить проблему:)

0
ответ дан K zell 27 March 2019 в 20:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: