Как запретить Redux преобразовывать неизменные данные (при использовании transition.fromJSON)? - PullRequest
0 голосов
/ 27 февраля 2019

Я относительно новичок в Redux, но, по моим наблюдениям, все данные в хранилище редуксов являются неизменяемыми, и как только они отображаются на реквизиты, они преобразуются в обычные объекты JS.

У меня есть случай, когда моя «полезная нагрузка» является неизменным объектом (неизменяемая вложенная карта).Этот объект хранится в базе данных с помощью функции «tran.toJSON».Используя другое действие / редуктор, этот объект можно извлечь, используя функцию 'tran.fromJSON'.

До редукции приложения, использование этой функции транзита работало нормально (транзит.неизменная форма).Тем не менее, теперь с помощью redux объект возвращается как обычный JS-объект.

Единственное отличие заключается в том, что tranit.fromJSON / transition.toJSON теперь реализуется в редукторе (по сравнению с функциями компонентов реагирования).

В компоненте (отправка объекта в БД):

onSubmit() {
    var data = {'data_item': transit.toJSON(item)}
    this.props.saveItem(data)
}

В действии (для сохранения объекта в базе данных):

 const saveItem = (data) => async(dispatch) => {
      const response = await REST.post('/save_item', data)
      dispatch({
        'type': ITEM_SAVED,
        'payload': response.data,
        });
      }
     catch(error) {
        console.log(error);
      }

В действии для извлеченияобъект из базы данных:

 try{
    const response = await REST.get('/get_data_item?id='+item_id)
    dispatch({
        'type': FETCH_ITEM,
        'payload': response.data,
    })
 }
catch(error) {
    console.log(error)
}

В редукторе (после извлечения базы данных формы объекта):

case action.FETCH_ITEM:
    return state.set('dataItem', transit.fromJSON(payload.data_item)

mapStateToProps:

const mapStateToProps = state => {
    const store = state.reportbuilder.toJS();
    return {'dataItem': store.dataItem}

1 Ответ

0 голосов
/ 27 февраля 2019

Redux не выполняет никаких преобразований.Redux даже не знает, каковы ваши реальные данные. Вы несете ответственность за все это, написав редукторы, которые работают с определенными типами данных, и извлекая эти данные в ваши mapStateToProps функции.

Если вы можете привести некоторые конкретные примеры того, чтоданные, с которыми вы работаете и где они «трансформируются» неожиданным образом, это может помочь.Но, как правило, вы несете ответственность за написание всего кода, который манипулирует этими данными.

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