Как мне объединить рамду с перекомпоновкой? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть этот компонент;

const ReposGrid = R.pipe(
    R.prop("repos"),
 // branch(R.isEmpty, renderComponent(Loader)),
    R.map(Repo),
    ReposWraper
)

export default ReposGrid

Это работает нормально, но я хочу визуализировать компонент загрузчика, если repos пусто. Мой branch из перекомпоновки просто ничего не делает. Он не показывает загрузчик и не отображает repos, когда он загружен. Могу ли я подать R.ifElse здесь?

1 Ответ

0 голосов
/ 04 сентября 2018

Возможно, вы перепутали ramda pipe / compose и пересоздали и аргументы, которые они принимают. Ваша цепочка состоит из набора компонентов и функций более высокого порядка, работающих на подпорках. Лучше всего хранить данные в mapProps / withProps и т. Д.

Возможно, вы сможете достичь чего-то похожего на то, что вам нужно, как это:

import { map, evolve, propSatisfies, isEmpty } from 'ramda'
import { compose, branch, renderComponent, mapProps, renameProp } from 'recompose'

const Repo = (repo) => <div>Repo {repo}</div>
const Loader = () => <div>Loader</div>
const RepoGridBase = props => <div>{props.children}</div>

const ReposGrid = compose(
    branch(
      propSatisfies(isEmpty, 'repos'),
      renderComponent(Loader),
    ),
    mapProps(evolve({
      repos: map(Repo)
    })),
    renameProp('repos', 'children')
)(RepoGridBase)

function App() {
  return (
    <div className="App">
      <ReposGrid repos={[]} />
      <ReposGrid repos={['one', 'two']} />
    </div>
  );
}

(это выдаст ключевые предупреждения, вам, вероятно, лучше будет явно выполнить map внутри компонента)

коды и ссылки на ящики

...