Почему Ignite redux постоянно выдает неизменную ошибку при добавлении редуктора навигации в белый список?

Я использую собственный реактивный Ignite Andross Boilerplate, и я пытаюсь сохранить состояние навигации, чтобы, когда пользователь закроет / откроет приложение, он вернется к предыдущему экрану.

Например: пользователь заполняет форму регистрации, затем закрывает приложение и возвращается позже, чтобы закончить, где бы он ни остановился.

Поскольку redux persist предоставляется из коробки с Ignite, я подумал, что могу просто добавить навигационный редуктор в постоянный белый список и позволить redux продолжать свою работу, сохраняя мое состояние навигации в локальном хранилище.

Итак, я сделал это:

// App/Config/ReduxPersist.js

import immutablePersistenceTransform from '../Services/ImmutablePersistenceTransform'
import { AsyncStorage } from 'react-native'

// More info here:  https://shift.infinite.red/shipping-persistant-reducers-7341691232b1
const REDUX_PERSIST = {
  active: true,
  reducerVersion: '1.1',
  storeConfig: {
    key: 'primary',
    storage: AsyncStorage,
    // Reducer keys that you do NOT want stored to persistence here.
    blacklist: ['login', 'search'],
    // Optionally, just specify the keys you DO want stored to persistence.
    // An empty array means 'don't store any reducers' -> infinitered/ignite#409
    whitelist: ['nav'],
    transforms: [immutablePersistenceTransform]
  }
}

export default REDUX_PERSIST


Дело в том, что ... Я получил такую ​​ошибку в результате:

введите описание изображения здесь

И как-то я понял, что виноват immutablePersistenceTransform. Как я это узнал? Ну ... я не сделал! Я только что увидел, что единственное, что связано с неизменяемым, - это преобразование, и прокомментировал его.

Итак, когда мой код выглядит следующим образом, он работает:


// App/Config/ReduxPersist.js

import immutablePersistenceTransform from '../Services/ImmutablePersistenceTransform'
import { AsyncStorage } from 'react-native'

// More info here:  https://shift.infinite.red/shipping-persistant-reducers-7341691232b1
const REDUX_PERSIST = {
  active: true,
  reducerVersion: '1.1',
  storeConfig: {
    key: 'primary',
    storage: AsyncStorage,
    // Reducer keys that you do NOT want stored to persistence here.
    blacklist: ['login', 'search'],
    // Optionally, just specify the keys you DO want stored to persistence.
    // An empty array means 'don't store any reducers' -> infinitered/ignite#409
    whitelist: ['nav'],
    //transforms: [immutablePersistenceTransform]
  }
}

export default REDUX_PERSIST


// Приложение / Сервисы / ImmutablePersistenceTransform.js

Почему возникает эта ошибка? Комментирование преобразования - лучшее решение? Любая помощь будет приветствоваться !!!

Кроме того, immutablePersistenceTransform это следующее:


import R from 'ramda'
import Immutable from 'seamless-immutable'

// is this object already Immutable?
const isImmutable = R.has('asMutable')

// change this Immutable object into a JS object
const convertToJs = (state) => state.asMutable({deep: true})

// optionally convert this object into a JS object if it is Immutable
const fromImmutable = R.when(isImmutable, convertToJs)

// convert this JS object into an Immutable object
const toImmutable = (raw) => Immutable(raw)

// the transform interface that redux-persist is expecting
export default {
  out: (state) => {
    // console.log({ retrieving: state })
    return toImmutable(state)
  },
  in: (raw) => {
    // console.log({ storing: raw })
    return fromImmutable(raw)
  }
}



Любая помощь ?


person Tiago Conceiçao    schedule 05.06.2019    source источник


Ответы (1)


Чувак, я думаю, что «nav» не является неизменяемой структурой данных. Вот почему выкидывают эту ошибку

person Renan Praxedes    schedule 26.07.2019