Это потому, что R.propSatisfies
имеет сигнатуру метода, отличную от R.isEmpty
.
В случае вашего первого подхода:
branch(R.propSatisfies(R.isEmpty, "repos"), renderComponent(Loader))
функция R.propSatisfies
оценивает функцию (R.isEmpty
) по свойству ("repos"
) входного объекта (т. Е. Объекта, возвращаемого из renderComponent(Loader)
).
В случае вашего второго подхода:
// branch(R.isEmpty("repos"), renderComponent(Loader)),
то, что вы здесь делаете, называется R.isEmpty
напрямую. Метод R.isEmpty
ожидает массив и возвращает true, если предоставленный массив пуст. R.isEmpty
не имеет возможности определить, является ли свойство (т. Е. «Репо») в объекте пустым или нет. Чтобы было проще визуализировать происходящее, рассмотрите следующее:
// Your second approach:
branch(R.isEmpty("repos"), renderComponent(Loader))
// ...which when expanded, is equivalent to this. You can now see it
// shows incorrect usage of R.isEmpty
branch(component => R.isEmpty("repos")(component), renderComponent(Loader))
Надеюсь, что это дает некоторые пояснения - для получения дополнительной информации о R.isEmpty
, см. Эту ссылку