Проблема Clojurescript и React Native Navigator

Я играю с react native и clojurescript, используя re-natal с ромом в качестве адаптера реакции. Теперь я пытаюсь использовать родную реакциюStackNavigatorдля навигации. К сожалению, я получаю не очень полезную ошибку:

Error: The component for route 'Home' must be a React component.

Когда я просто пропускаю навигатор и использую компонент, который я установил для маршрута 'Home'компонент работает нормально. Поэтому я не понимаю сообщения об ошибке, потому что рассматриваемый компонентH насколько я вижу действительный компонент реакции, иначе я не смог бы использовать компонент непосредственно в MyApp как дочерний компонент.

Вот рассматриваемый код:

(ns app.components)
;; (:require ...)

;; get the necessary js modules
(set! js/window.React (js/require "react"))
(def ReactNative (js/require "react-native"))
(def ReactNavigationStack (js/require "react-navigation-stack"))

;; Adapt components for rum. taken from re-natal
(defn create-element
  [rn-comp opts & children]
  (apply js/React.createElement rn-comp (clj->js opts) children))

;; adapt some basic react components
(def View (partial create-element (.-View ReactNative)))
(def Text (partial create-element (.-Text ReactNative)))

;; Components that should me managed by the navigator
(def H
  (View {:style {:flexDirection "column" :margin 40 :alignItems "center"}}
    (Text {:style {:fontSize 30 :fontWeight "100" :marginBottom 20 :textAlign "center"}} "App Home")))

(def A
  (View {:style {:flexDirection "column" :margin 40 :alignItems "center"}}
    (Text {:style {:fontSize 30 :fontWeight "100" :marginBottom 20 :textAlign "center"}} "App About")))

;; The navigator component
(def StackNavigator (partial create-element (.-createStackNavigator ReactNavigationStack)))

;; App root component. Uses rum reactive mixin.
(defc MyApp < rum/reactive [log conn]
  (let [rc    {:Home  {:screen H}
               :About {:screen A}}
        nc    {:initalRouteName "Home"
               :headerMode "none"
               :mode "card"}]
       (StackNavigator rc nc)))

;; this would work fine
(defc MyApp < rum/reactive [log conn]
  H)

Все необходимые модули устанавливаются с помощью npm и включены для re-natal, никаких проблем быть не должно.

Прямо сейчас я не вижу своей ошибки и хотел бы получить помощь.

0 ответов

Другие вопросы по тегам