diff --git a/react.md b/react.md index 64dba537b..ae920d93e 100644 --- a/react.md +++ b/react.md @@ -98,7 +98,7 @@ class Info extends React.Component { } } ``` -{: data-line="6-7"} +{: data-line="6,7"} Nest components to separate concerns. See: [Composing Components](https://facebook.github.io/react/docs/components-and-props.html#composing-components) @@ -208,33 +208,126 @@ class MyComponent extends React.Component { this.input = el} /> } + + componentDidMount () { + this.input.focus() + } } ``` -{: data-line="4"} - -```jsx -this.input.focus() -this.input.value() -``` +{: data-line="4,9"} Allows access to DOM nodes. See: [Refs and the DOM](https://facebook.github.io/react/docs/refs-and-the-dom.html) ### DOM Events +```jsx +class MyComponent extends React.Component { + render () { + this.onChange(event)} /> + } + + onChange (event) { + this.setState({ value: event.target.vlaue }) + } +} +``` +{: data-line="5,9"} + +Pass functions to attributes like `onChange`. See: [Events](https://facebook.github.io/react/docs/events.html) + +## Other features + +### Transfering props + ```html - + +``` +{: .-setup} + +```jsx +class VideoPlayer extends React.Component { + render () { + return + } +} ``` {: data-line="3"} +Propagates `src="..."` down to the sub-component. +See [Transferring props](http://facebook.github.io/react/docs/transferring-props.html). + +### Top-level API + ```jsx -handleChange: function(event) { - this.setState({ value: event.target.value }); -} +React.createClass({ ... }) +React.isValidElement(c) ``` -Add attributes like `onChange`. See: [Events](https://facebook.github.io/react/docs/events.html) +```jsx +ReactDOM.render(, domnode, [callback]) +ReactDOM.unmountComponentAtNode(domnode) +``` + +```jsx +ReactDOMServer.renderToString() +ReactDOMServer.renderToStaticMarkup() +``` + +JSX patterns +------------ +{: .-two-column} + +### Style shorthand + +```jsx +var style = { height: 10 } +return
+``` + +```jsx +return
+``` + +See: [Inline styles](https://facebook.github.io/react/tips/inline-styles.html) + +### Inner HTML + +```jsx +function markdownify() { return "

...

"; } +
+``` + +See: [Dangerously set innerHTML](https://facebook.github.io/react/tips/dangerously-set-inner-html.html) + +### Lists + +```jsx +class TodoList extends React.Component { + render () { + const { items } = this.props + + return
    + {items.map(item => + )} +
+ } +} +``` +{: data-line="6,7"} + +Always supply a `key` property. + +### Conditionals + +```jsx +
+ {showPopup + ? + : null} +
+``` Property validation ------------------- @@ -351,100 +444,8 @@ MyCo.propTypes = { } ``` -## Other features - -### Transfering props - -```html - -``` -{: .-setup} - -```jsx -class VideoPlayer extends React.Component { - render () { - return - } -} -``` -{: data-line="3"} - -Propagates `src="..."` down to the sub-component. -See [Transferring props](http://facebook.github.io/react/docs/transferring-props.html). - -### Top-level API - -```jsx -React.createClass({ ... }) -React.isValidElement(c) -``` - -```jsx -ReactDOM.render(, domnode, [callback]) -ReactDOM.unmountComponentAtNode(domnode) -``` - -```jsx -ReactDOMServer.renderToString() -ReactDOMServer.renderToStaticMarkup() -``` - -JSX patterns ------------- -{: .-two-column} - -### Style shorthand - -```jsx -var style = { height: 10 } -return
-``` - -```jsx -return
-``` - -See: [Inline styles](https://facebook.github.io/react/tips/inline-styles.html) - -### Inner HTML - -```jsx -function markdownify() { return "

...

"; } -
-``` - -See: [Dangerously set innerHTML](https://facebook.github.io/react/tips/dangerously-set-inner-html.html) - -### Lists - -```jsx -class TodoList extends React.Component { - render () { - const { items } = this.props - - return
    - {items.map(item => - )} -
- } -} -``` -{: data-line="6-7"} - -Always supply a `key` property. - -### Conditionals - -```jsx -
- {showPopup - ? - : null} -
-``` - Examples -------- +-------- {: .-left-reference} ### Basic example