Передача объекта immutable.js в функции Ramda не работает - функция pipe не вызывается - PullRequest
0 голосов
/ 11 апреля 2019

Я унаследовал избыточное хранилище, которое реализовано с использованием immutable.js (объект хранилища - Map).

Когда я пытаюсь pipe сохранить через ramda, он не работает:

  import { pipe, tap } from 'ramda';

  it.only('should handle data loading', () => {
    const initialState = home(); // it returns map
    const fn = pipe(
      tap(x => {
        console.log('i am inside tap', x);
      })
    );
    console.log('this is initialState', initialState); // prints state to console correctly
    fn('wtf');          // works - tap is called
    fn(initialState);   // does not work - tap is not called
  });

Знаете ли вы, почему fn(initialState) не работает?

1 Ответ

1 голос
/ 11 апреля 2019

Кажется, проблема с tap. И, кажется, был представлен в нескольких последних версиях. Единственная разница между следующими двумя фрагментами состоит в том, что первый использует Ramda 0.24, а второй - Ramda 0.26.1. Где-то между ними tap, кажется, сломался. Хотя он работает с некоторыми значениями, он не работает с Immutable.

Не могли бы вы поднять проблему для этого с проектом Ramda?

const {Map} = immutable
const {tap, pipe, map} = ramda
const square = n => n * n;
const home = () => new Map({foo: 1, bar: 2, baz: 3});

const fn = pipe(
  tap(console.log),
  map(square),
  tap(console.log),
);

const initialState = home();

fn(initialState);   // does not work - tap is not called
<script src="https://bundle.run/ramda@0.24.0"></script>
<script src="https://bundle.run/immutable@4.0.0-rc.12"></script>

const {Map} = immutable
const {tap, pipe, map} = ramda
const square = n => n * n;
const home = () => new Map({foo: 1, bar: 2, baz: 3});

const fn = pipe(
  tap(console.log),
  map(square),
  tap(console.log),
);

const initialState = home();

fn(initialState);   // does not work - tap is not called
<script src="https://bundle.run/ramda@0.26.1"></script>
<script src="https://bundle.run/immutable@4.0.0-rc.12"></script>
...