diff --git a/react/react-tests.ts b/react/react-tests.ts index f0267d907..37380b23b 100644 --- a/react/react-tests.ts +++ b/react/react-tests.ts @@ -72,13 +72,23 @@ React.createClass(PropTypesSpecification); var mountNode: Element; -var HelloMessage = React.createClass({displayName: 'HelloMessage', +interface HelloMessageProps { + name: string; +} + +var HelloMessage = React.createClass({displayName: 'HelloMessage', render: function() { - return React.DOM.div(null, "Hello ", (>this).props.name); + return React.DOM.div(null, "Hello ", (>this).props.name); } }); -React.render(HelloMessage({name: "John"}), mountNode); +// This code - calling a component directly - is deprecated in v0.12 +// See http://fb.me/react-legacyfactory +React.render(HelloMessage({ name: "John" }), mountNode); + +// Create a factory instead +var HelloMessageFactory = React.createFactory(HelloMessage) +React.render(HelloMessageFactory({ name: "John" }), mountNode) var Timer = React.createClass({displayName: 'Timer', getInitialState: function() { @@ -104,4 +114,4 @@ var Timer = React.createClass({displayName: 'Timer', } }); -React.render(Timer(null), mountNode); \ No newline at end of file +React.render(Timer(), mountNode); \ No newline at end of file diff --git a/react/react.d.ts b/react/react.d.ts index 40522920f..f7e5f5387 100644 --- a/react/react.d.ts +++ b/react/react.d.ts @@ -4,7 +4,7 @@ // Definitions: https://github.com/borisyankov/DefinitelyTyped declare module "react" { -export = React; + export = React; } declare module React { @@ -50,11 +50,11 @@ declare module React { export interface ReactComponentFactory

{ - (properties: P, ...children: any[]): ReactComponentElement

; + (properties?: P, ...children: any[]): ReactComponentElement

; } export interface ReactElementFactory

{ - (properties: P, ...children: any[]): ReactDOMElement

; + (properties?: P, ...children: any[]): ReactDOMElement

; } export interface DomElement extends ReactElementFactory { @@ -117,6 +117,11 @@ declare module React { export interface DomReferencer { getDOMNode(): Element; + /** + * Use this overload to cast the returned element to a more specific type. + * Eg: var name = this.refs['name'].getDOMNode().value + */ + getDOMNode(): TElement; } export interface Component extends DomReferencer {