Проблема 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, никаких проблем быть не должно.
Прямо сейчас я не вижу своей ошибки и хотел бы получить помощь.