react-crossroads
Version:
Client side router for web applications built with React and utilizing the Flux architecture. The backing routing engine is CrossroadsJs.
34 lines (24 loc) • 874 B
text/coffeescript
React = require 'react'
RouteDefinition = require './RouteDefinition'
merge = require 'react/lib/merge'
TYPE = 'Route'
_atLeastOneUnlessDefault = (props, propName) ->
return new Error 'Must provide either a name, a path or both' unless props.name? or props.path?
React.PropTypes.string.apply(null, arguments)
class Route extends RouteDefinition
type: TYPE
constructor: (props) ->
defaultProps =
handlerProps: {}
= merge defaultProps, props
super()
propTypes:
handler: RouteDefinition.PropTypes.componentClass.isRequired
path: _atLeastOneUnlessDefault
name: _atLeastOneUnlessDefault
handlerProps: React.PropTypes.object.isRequired
factory = (props) ->
throw new Error 'Route does not support children, use <Routes /> instead' if arguments.length > 1
new Route props
factory.type = TYPE
module.exports = factory