Я пытаюсь найти пример использования response-router через API javascript, но пока ничего не могу найти.
Моя цель - использовать реактивный маршрутизатор с реагентом и clojurescript. Так что, если у кого-то это работает (даже с Ом), я буду признателен за толчок в правильном направлении. В противном случае будет полезен простой пример javascript без JSX.
Изменить 1 - приближение к решению
Спасибо @FakeRainBrigand за помощь в переводе JSX в простой JS.
Вот версия React.js 0.11.2 (это то, что использует текущий выпуск Reagent - 0.4.3).
/** @jsx React.DOM */
Routes({location: "history"},
Route({name: "app", path: "/", handler: App},
Route({name: "inbox", handler: Inbox}),
Route({name: "calendar", handler: "{Calendar}"})))
Подсказка: вы можете выполнить преобразование JSX- ›JS, используя JSXTransformer.js
для вашей версии React. Просто включите его на свою страницу и используйте консоль разработчика своего браузера для выполнения JSXTransformer.transform('/** @jsx React.DOM */<Route location="history">...</Route>').code
Вот версия Clojurescript:
(ns mytest.core
(:require [reagent.core :as reagent :refer [atom]])
(defn home []
[:div [:h1 "Home Component Placeholder"]])
(defn info []
[:div [:h1 "Info Component Placeholder"]])
(defn build-component [comp]
(reagent/as-component (if (fn? comp) (comp) comp)))
(defn react-router []
(js/ReactRouter.Routes #js {:location "history"}
(js/ReactRouter.Route #js {:name "app" :path "/" :handler (build-component home)}
(js/ReactRouter.DefaultRoute #js {:handler (build-component home)})
(js/ReactRouter.Route #js {:name "about" :path "/about" :handler (build-component info)}))))
К сожалению, компоненты, которые Reagent создает по умолчанию, не кажутся стандартными компонентами React в этом React.isValidClass(myReagentComponent) === false
. Итак, все, что осталось, это выяснить, как сгенерировать компоненты в форме, которая проходит этот тест. Для этого у меня есть вопрос о переполнении стека.