Files
react/docs/events-zh-CN.html
T
Paul O’Shannessy 63dff641cf Update website
2016-03-21 11:28:34 -07:00

642 lines
28 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>事件系统 | React</title>
<meta name="viewport" content="width=device-width">
<meta property="og:title" content="事件系统 | React">
<meta property="og:type" content="website">
<meta property="og:url" content="https://facebook.github.io/react/docs/events-zh-CN.html">
<meta property="og:image" content="https://facebook.github.io/react/img/logo_og.png">
<meta property="og:description" content="A JavaScript library for building user interfaces">
<meta property="fb:app_id" content="623268441017527">
<link rel="shortcut icon" href="/react/favicon.ico">
<link rel="alternate" type="application/rss+xml" title="React" href="https://facebook.github.io/react/feed.xml">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.css" />
<link rel="stylesheet" href="/react/css/syntax.css">
<link rel="stylesheet" href="/react/css/codemirror.css">
<link rel="stylesheet" href="/react/css/react.css">
<script src="//use.typekit.net/vqa1hcx.js"></script>
<script>try{Typekit.load();}catch(e){}</script>
<!--[if lte IE 8]>
<script src="/react/js/html5shiv.min.js"></script>
<script src="/react/js/es5-shim.min.js"></script>
<script src="/react/js/es5-sham.min.js"></script>
<![endif]-->
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/1/docsearch.min.js"></script>
<script src="/react/js/codemirror.js"></script>
<script src="/react/js/javascript.js"></script>
<script src="/react/js/react.js"></script>
<script src="/react/js/react-dom.js"></script>
<script src="/react/js/babel-browser.min.js"></script>
<script src="/react/js/live_editor.js"></script>
</head>
<body>
<div class="container">
<div class="nav-main">
<div class="wrap">
<a class="nav-home" href="/react/index.html">
<img class="nav-logo" src="/react/img/logo.svg" width="36" height="36">
React
</a>
<ul class="nav-site nav-site-internal">
<li><a href="/react/docs/getting-started.html" class="active">Docs</a></li>
<li><a href="/react/support.html">Support</a></li>
<li><a href="/react/downloads.html">Download</a></li>
<li><a href="/react/blog/">Blog</a></li>
<li>
<input id="algolia-doc-search" type="text" placeholder="Search docs..." />
</li>
</ul>
<ul class="nav-site nav-site-external">
<li><a href="https://github.com/facebook/react">GitHub</a></li>
<li><a href="https://facebook.github.io/react-native/">React Native</a></li>
</ul>
</div>
</div>
<section class="content wrap documentationContent">
<div class="nav-docs">
<!-- Docs Nav -->
<div class="nav-docs-section">
<h3>Quick Start</h3>
<ul>
<li>
<a href="/react/docs/getting-started.html">Getting Started</a>
</li>
<li>
<a href="/react/docs/tutorial.html">Tutorial</a>
</li>
<li>
<a href="/react/docs/thinking-in-react.html">Thinking in React</a>
</li>
</ul>
</div>
<div class="nav-docs-section">
<h3>Community Resources</h3>
<ul>
<li>
<a href="/react/docs/conferences.html">Conferences</a>
</li>
<li>
<a href="/react/docs/videos.html">Videos</a>
</li>
<li>
<a href="https://github.com/facebook/react/wiki/Complementary-Tools" class="external">Complementary Tools</a>
</li>
<li>
<a href="https://github.com/facebook/react/wiki/Examples" class="external">Examples</a>
</li>
</ul>
</div>
<div class="nav-docs-section">
<h3>Guides</h3>
<ul>
<li>
<a href="/react/docs/why-react.html">Why React?</a>
</li>
<li>
<a href="/react/docs/displaying-data.html">Displaying Data</a>
<ul>
<li>
<a href="/react/docs/jsx-in-depth.html">JSX in Depth</a>
</li>
<li>
<a href="/react/docs/jsx-spread.html">JSX Spread Attributes</a>
</li>
<li>
<a href="/react/docs/jsx-gotchas.html">JSX Gotchas</a>
</li>
</ul>
</li>
<li>
<a href="/react/docs/interactivity-and-dynamic-uis.html">Interactivity and Dynamic UIs</a>
</li>
<li>
<a href="/react/docs/multiple-components.html">Multiple Components</a>
</li>
<li>
<a href="/react/docs/reusable-components.html">Reusable Components</a>
</li>
<li>
<a href="/react/docs/transferring-props.html">Transferring Props</a>
</li>
<li>
<a href="/react/docs/forms.html">Forms</a>
</li>
<li>
<a href="/react/docs/working-with-the-browser.html">Working With the Browser</a>
<ul>
<li>
<a href="/react/docs/more-about-refs.html">Refs to Components</a>
</li>
</ul>
</li>
<li>
<a href="/react/docs/tooling-integration.html">Tooling Integration</a>
</li>
<li>
<a href="/react/docs/addons.html">Add-Ons</a>
<ul>
<li>
<a href="/react/docs/animation.html">Animation</a>
</li>
<li>
<a href="/react/docs/two-way-binding-helpers.html">Two-Way Binding Helpers</a>
</li>
<li>
<a href="/react/docs/test-utils.html">Test Utilities</a>
</li>
<li>
<a href="/react/docs/clone-with-props.html">Cloning Elements</a>
</li>
<li>
<a href="/react/docs/create-fragment.html">Keyed Fragments</a>
</li>
<li>
<a href="/react/docs/update.html">Immutability Helpers</a>
</li>
<li>
<a href="/react/docs/pure-render-mixin.html">PureRenderMixin</a>
</li>
<li>
<a href="/react/docs/perf.html">Performance Tools</a>
</li>
<li>
<a href="/react/docs/shallow-compare.html">Shallow Compare</a>
</li>
</ul>
</li>
<li>
<a href="/react/docs/advanced-performance.html">Advanced Performance</a>
</li>
<li>
<a href="/react/docs/context.html">Context</a>
</li>
</ul>
</div>
<div class="nav-docs-section">
<h3>Reference</h3>
<ul>
<li>
<a href="/react/docs/top-level-api.html">Top-Level API</a>
</li>
<li>
<a href="/react/docs/component-api.html">Component API</a>
</li>
<li>
<a href="/react/docs/component-specs.html">Component Specs and Lifecycle</a>
</li>
<li>
<a href="/react/docs/tags-and-attributes.html">Supported Tags and Attributes</a>
</li>
<li>
<a href="/react/docs/events.html">Event System</a>
</li>
<li>
<a href="/react/docs/dom-differences.html">DOM Differences</a>
</li>
<li>
<a href="/react/docs/special-non-dom-attributes.html">Special Non-DOM Attributes</a>
</li>
<li>
<a href="/react/docs/reconciliation.html">Reconciliation</a>
</li>
<li>
<a href="/react/docs/webcomponents.html">Web Components</a>
</li>
<li>
<a href="/react/docs/glossary.html">React (Virtual) DOM Terminology</a>
</li>
</ul>
</div>
<div class="nav-docs-section">
<h3>Flux</h3>
<ul>
<li>
<a href="https://facebook.github.io/flux/docs/overview.html" class="external">Flux Overview</a>
</li>
<li>
<a href="https://facebook.github.io/flux/docs/todo-list.html" class="external">Flux TodoMVC Tutorial</a>
</li>
</ul>
</div>
<!-- Tips Nav -->
<div class="nav-docs-section">
<h3>Tips</h3>
<ul>
<li>
<a href="/react/tips/introduction.html">Introduction</a>
</li>
<li>
<a href="/react/tips/inline-styles.html">Inline Styles</a>
</li>
<li>
<a href="/react/tips/if-else-in-JSX.html">If-Else in JSX</a>
</li>
<li>
<a href="/react/tips/self-closing-tag.html">Self-Closing Tag</a>
</li>
<li>
<a href="/react/tips/maximum-number-of-jsx-root-nodes.html">Maximum Number of JSX Root Nodes</a>
</li>
<li>
<a href="/react/tips/style-props-value-px.html">Shorthand for Specifying Pixel Values in style props</a>
</li>
<li>
<a href="/react/tips/children-props-type.html">Type of the Children props</a>
</li>
<li>
<a href="/react/tips/controlled-input-null-value.html">Value of null for Controlled Input</a>
</li>
<li>
<a href="/react/tips/componentWillReceiveProps-not-triggered-after-mounting.html">componentWillReceiveProps Not Triggered After Mounting</a>
</li>
<li>
<a href="/react/tips/props-in-getInitialState-as-anti-pattern.html">Props in getInitialState Is an Anti-Pattern</a>
</li>
<li>
<a href="/react/tips/dom-event-listeners.html">DOM Event Listeners in a Component</a>
</li>
<li>
<a href="/react/tips/initial-ajax.html">Load Initial Data via AJAX</a>
</li>
<li>
<a href="/react/tips/false-in-jsx.html">False in JSX</a>
</li>
<li>
<a href="/react/tips/communicate-between-components.html">Communicate Between Components</a>
</li>
<li>
<a href="/react/tips/expose-component-functions.html">Expose Component Functions</a>
</li>
<li>
<a href="/react/tips/children-undefined.html">this.props.children undefined</a>
</li>
<li>
<a href="/react/tips/use-react-with-other-libraries.html">Use React with Other Libraries</a>
</li>
<li>
<a href="/react/tips/dangerously-set-inner-html.html">Dangerously Set innerHTML</a>
</li>
</ul>
</div>
</div>
<div class="inner-content">
<h1>
事件系统
<a class="edit-page-link" href="https://github.com/facebook/react/tree/master/docs/docs/ref-05-events.zh-CN.md" target="_blank">Edit on GitHub</a>
</h1>
<div class="subHeader"></div>
<h2><a class="anchor" name=""></a>合成事件 <a class="hash-link" href="#">#</a></h2>
<p>事件处理程序通过 <code>合成事件</code><code>SyntheticEvent</code>)的实例传递,<code>SyntheticEvent</code> 是浏览器原生事件跨浏览器的封装。<code>SyntheticEvent</code> 和浏览器原生事件一样有 <code>stopPropagation()</code><code>preventDefault()</code> 接口,而且这些接口夸浏览器兼容。</p>
<p>如果出于某些原因想使用浏览器原生事件,可以使用 <code>nativeEvent</code> 属性获取。每个和成事件(<code>SyntheticEvent</code>)对象都有以下属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="kr">boolean</span> <span class="nx">bubbles</span>
<span class="kr">boolean</span> <span class="nx">cancelable</span>
<span class="nx">DOMEventTarget</span> <span class="nx">currentTarget</span>
<span class="kr">boolean</span> <span class="nx">defaultPrevented</span>
<span class="nx">number</span> <span class="nx">eventPhase</span>
<span class="kr">boolean</span> <span class="nx">isTrusted</span>
<span class="nx">DOMEvent</span> <span class="nx">nativeEvent</span>
<span class="k">void</span> <span class="nx">preventDefault</span><span class="p">()</span>
<span class="kr">boolean</span> <span class="nx">isDefaultPrevented</span><span class="p">()</span>
<span class="k">void</span> <span class="nx">stopPropagation</span><span class="p">()</span>
<span class="kr">boolean</span> <span class="nx">isPropagationStopped</span><span class="p">()</span>
<span class="nx">DOMEventTarget</span> <span class="nx">target</span>
<span class="nx">number</span> <span class="nx">timeStamp</span>
<span class="nx">string</span> <span class="nx">type</span>
</code></pre></div>
<blockquote>
<p>注意:</p>
<p>React v0.14 中,事件处理程序返回 <code>false</code> 不再停止事件传播,取而代之,应该根据需要手动触发 <code>e.stopPropagation()</code><code>e.preventDefault()</code></p>
</blockquote>
<h2><a class="anchor" name=""></a>事件池 <a class="hash-link" href="#">#</a></h2>
<p><code>SyntheticEvent</code> 是池化的. 这意味着 <code>SyntheticEvent</code> 对象将会被重用并且所有的属性都会在事件回调被调用后被 nullified.
这是因为性能的原因.
因此,你不能异步的访问事件.</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="kd">function</span> <span class="nx">onClick</span><span class="p">(</span><span class="nx">event</span><span class="p">)</span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">event</span><span class="p">);</span> <span class="c1">// =&gt; nullified object.</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">type</span><span class="p">);</span> <span class="c1">// =&gt; &quot;click&quot;</span>
<span class="kd">var</span> <span class="nx">eventType</span> <span class="o">=</span> <span class="nx">event</span><span class="p">.</span><span class="nx">type</span><span class="p">;</span> <span class="c1">// =&gt; &quot;click&quot;</span>
<span class="nx">setTimeout</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">event</span><span class="p">.</span><span class="nx">type</span><span class="p">);</span> <span class="c1">// =&gt; null</span>
<span class="nx">console</span><span class="p">.</span><span class="nx">log</span><span class="p">(</span><span class="nx">eventType</span><span class="p">);</span> <span class="c1">// =&gt; &quot;click&quot;</span>
<span class="p">},</span> <span class="mi">0</span><span class="p">);</span>
<span class="k">this</span><span class="p">.</span><span class="nx">setState</span><span class="p">({</span><span class="nx">clickEvent</span><span class="o">:</span> <span class="nx">event</span><span class="p">});</span> <span class="c1">// Won&#39;t work. this.state.clickEvent will only contain null values.</span>
<span class="k">this</span><span class="p">.</span><span class="nx">setState</span><span class="p">({</span><span class="nx">eventType</span><span class="o">:</span> <span class="nx">event</span><span class="p">.</span><span class="nx">type</span><span class="p">});</span> <span class="c1">// You can still export event properties.</span>
<span class="p">}</span>
</code></pre></div>
<blockquote>
<p>注意:</p>
<p>如果你想异步访问事件属性,你应该在事件上调用 <code>event.persist()</code> ,这会从池中移除合成事件并允许对事件的引用被用会保留.</p>
</blockquote>
<h2><a class="anchor" name=""></a>支持的事件 <a class="hash-link" href="#">#</a></h2>
<p>React 将事件统一化,使事件在不同浏览器上有一致的属性.</p>
<p>下面的事件处理程序在事件冒泡阶段被触发。如果要注册事件捕获处理程序,应该使用 <code>Capture</code> 事件,例如使用 <code>onClickCapture</code> 处理点击事件的捕获阶段,而不是 <code>onClick</code></p>
<h3><a class="anchor" name=""></a>剪贴板事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onCopy onCut onPaste
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nx">DOMDataTransfer</span> <span class="nx">clipboardData</span>
</code></pre></div><h3><a class="anchor" name="composition-"></a>Composition 事件 <a class="hash-link" href="#composition-">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onCompositionEnd onCompositionStart onCompositionUpdate
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nx">string</span> <span class="nx">data</span>
</code></pre></div><h3><a class="anchor" name=""></a>键盘事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onKeyDown onKeyPress onKeyUp
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="kr">boolean</span> <span class="nx">altKey</span>
<span class="nx">number</span> <span class="nx">charCode</span>
<span class="kr">boolean</span> <span class="nx">ctrlKey</span>
<span class="kr">boolean</span> <span class="nx">getModifierState</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span>
<span class="nx">string</span> <span class="nx">key</span>
<span class="nx">number</span> <span class="nx">keyCode</span>
<span class="nx">string</span> <span class="nx">locale</span>
<span class="nx">number</span> <span class="nx">location</span>
<span class="kr">boolean</span> <span class="nx">metaKey</span>
<span class="kr">boolean</span> <span class="nx">repeat</span>
<span class="kr">boolean</span> <span class="nx">shiftKey</span>
<span class="nx">number</span> <span class="nx">which</span>
</code></pre></div><h3><a class="anchor" name=""></a>焦点事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onFocus onBlur
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nx">DOMEventTarget</span> <span class="nx">relatedTarget</span>
</code></pre></div>
<p>焦点事件在所有的React DOM上工作,不仅仅是表单元素.</p>
<h3><a class="anchor" name=""></a>表单事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onChange onInput onSubmit
</code></pre></div>
<p>关于 <code>onChange</code> 事件的更多信息,参见 <a href="/react/docs/forms-zh-CN.html">表单组件</a></p>
<h3><a class="anchor" name=""></a>鼠标事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onClick onContextMenu onDoubleClick onDrag onDragEnd onDragEnter onDragExit
onDragLeave onDragOver onDragStart onDrop onMouseDown onMouseEnter onMouseLeave
onMouseMove onMouseOut onMouseOver onMouseUp
</code></pre></div>
<p><code>onMouseEnter</code><code>onMouseLeave</code> 事件从离开的元素传播到进入的元素,代替冒泡排序并且没有捕获阶段. </p>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="kr">boolean</span> <span class="nx">altKey</span>
<span class="nx">number</span> <span class="nx">button</span>
<span class="nx">number</span> <span class="nx">buttons</span>
<span class="nx">number</span> <span class="nx">clientX</span>
<span class="nx">number</span> <span class="nx">clientY</span>
<span class="kr">boolean</span> <span class="nx">ctrlKey</span>
<span class="kr">boolean</span> <span class="nx">getModifierState</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span>
<span class="kr">boolean</span> <span class="nx">metaKey</span>
<span class="nx">number</span> <span class="nx">pageX</span>
<span class="nx">number</span> <span class="nx">pageY</span>
<span class="nx">DOMEventTarget</span> <span class="nx">relatedTarget</span>
<span class="nx">number</span> <span class="nx">screenX</span>
<span class="nx">number</span> <span class="nx">screenY</span>
<span class="kr">boolean</span> <span class="nx">shiftKey</span>
</code></pre></div><h3><a class="anchor" name="selection-events"></a>Selection Events <a class="hash-link" href="#selection-events">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onSelect
</code></pre></div><h3><a class="anchor" name=""></a>触控事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onTouchCancel onTouchEnd onTouchMove onTouchStart
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="kr">boolean</span> <span class="nx">altKey</span>
<span class="nx">DOMTouchList</span> <span class="nx">changedTouches</span>
<span class="kr">boolean</span> <span class="nx">ctrlKey</span>
<span class="kr">boolean</span> <span class="nx">getModifierState</span><span class="p">(</span><span class="nx">key</span><span class="p">)</span>
<span class="kr">boolean</span> <span class="nx">metaKey</span>
<span class="kr">boolean</span> <span class="nx">shiftKey</span>
<span class="nx">DOMTouchList</span> <span class="nx">targetTouches</span>
<span class="nx">DOMTouchList</span> <span class="nx">touches</span>
</code></pre></div><h3><a class="anchor" name=""></a>用户界面事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onScroll
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nx">number</span> <span class="nx">detail</span>
<span class="nx">DOMAbstractView</span> <span class="nx">view</span>
</code></pre></div><h3><a class="anchor" name=""></a>滚轮事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onWheel
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nx">number</span> <span class="nx">deltaMode</span>
<span class="nx">number</span> <span class="nx">deltaX</span>
<span class="nx">number</span> <span class="nx">deltaY</span>
<span class="nx">number</span> <span class="nx">deltaZ</span>
</code></pre></div><h3><a class="anchor" name=""></a>媒体事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onAbort onCanPlay onCanPlayThrough onDurationChange onEmptied onEncrypted onEnded onError onLoadedData onLoadedMetadata onLoadStart onPause onPlay onPlaying onProgress onRateChange onSeeked onSeeking onStalled onSuspend onTimeUpdate onVolumeChange onWaiting
</code></pre></div><h3><a class="anchor" name=""></a>图片事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onLoad onError
</code></pre></div><h3><a class="anchor" name=""></a>动画事件 <a class="hash-link" href="#">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onAnimationStart onAnimationEnd onAnimationIteration
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nx">string</span> <span class="nx">animationName</span>
<span class="nx">string</span> <span class="nx">pseudoElement</span>
<span class="kr">float</span> <span class="nx">elapsedTime</span>
</code></pre></div><h3><a class="anchor" name="transition-events"></a>Transition Events <a class="hash-link" href="#transition-events">#</a></h3>
<p>事件名称:</p>
<div class="highlight"><pre><code class="language-text" data-lang="text">onTransitionEnd
</code></pre></div>
<p>属性:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="nx">string</span> <span class="nx">propertyName</span>
<span class="nx">string</span> <span class="nx">pseudoElement</span>
<span class="kr">float</span> <span class="nx">elapsedTime</span>
</code></pre></div>
<div class="docs-prevnext">
<a class="docs-prev" href="/react/docs/tags-and-attributes-zh-CN.html">&larr; Prev</a>
<a class="docs-next" href="/react/docs/dom-differences-zh-CN.html">Next &rarr;</a>
</div>
</div>
</section>
<footer class="wrap">
<div class="left">
A Facebook &amp; Instagram collaboration.<br>
<a href="/react/acknowledgements.html">Acknowledgements</a>
</div>
<div class="right">
&copy; 2013&ndash;2016 Facebook Inc.<br>
Documentation licensed under <a href="https://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>.
</div>
</footer>
</div>
<div id="fb-root"></div>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-41298772-1', 'facebook.github.io');
ga('send', 'pageview');
!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId=623268441017527";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
docsearch({
apiKey: '36221914cce388c46d0420343e0bb32e',
indexName: 'react',
inputSelector: '#algolia-doc-search'
});
</script>
</body>
</html>