我正在尝试通过 javascript API 找到使用 react-router 的示例,但到目前为止找不到任何东西。
我的目标是将 react-router 与试剂和 clojurescript 一起使用。因此,如果有人已经完成了这项工作(即使是使用 Om),我将不胜感激朝着正确的方向前进。否则,只是一个没有 JSX 的直接 javascript 示例会很有帮助。
编辑 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}"})))
JSXTransformer.js
提示:您可以使用您的 React 版本执行 JSX->JS 转换。只需将其包含在您的页面中并使用浏览器的开发者控制台执行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
. 所以剩下的就是弄清楚如何以通过该测试的形式生成组件。我为此发布了一个Stack Overflow 问题。