Files
react/docs/forms-zh-CN.html
T
2016-07-14 20:43:11 +01:00

609 lines
29 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/forms-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/xml.js"></script>
<script src="/react/js/jsx.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>
<ul>
<li>
<a href="/react/docs/language-tooling.html">Language Tooling</a>
</li>
<li>
<a href="/react/docs/package-management.html">Package Management</a>
</li>
<li>
<a href="/react/docs/environments.html">Server-side Environments</a>
</li>
</ul>
</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>
<!-- 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>
<!-- Contributing Nav -->
<div class="nav-docs-section">
<h3>Contributing</h3>
<ul>
<li>
<a href="/react/contributing/design-principles.html">Design Principles</a>
</li>
</ul>
</div>
</div>
<div class="inner-content">
<a class="edit-page-link" href="https://github.com/facebook/react/tree/master/docs/docs/07-forms.zh-CN.md" target="_blank">Edit on GitHub</a>
<h1>
表单组件
</h1>
<div class="subHeader"></div>
<p>诸如 <code>&lt;input&gt;</code><code>&lt;textarea&gt;</code><code>&lt;option&gt;</code> 这样的表单组件不同于其他组件,因为他们可以通过用户交互发生变化。这些组件提供的界面使响应用户交互的表单数据处理更加容易。</p>
<p>关于 <code>&lt;form&gt;</code> 事件详情请查看 <a href="/react/docs/events-zh-CN.html#form-events">表单事件</a></p>
<h2><a class="anchor" name=""></a>交互属性 <a class="hash-link" href="#">#</a></h2>
<p>表单组件支持几个受用户交互影响的属性:</p>
<ul>
<li><code>value</code>,用于 <code>&lt;input&gt;</code><code>&lt;textarea&gt;</code> 组件。</li>
<li><code>checked</code>,用于类型为 <code>checkbox</code> 或者 <code>radio</code><code>&lt;input&gt;</code> 组件。</li>
<li><code>selected</code>,用于 <code>&lt;option&gt;</code> 组件。</li>
</ul>
<p>在 HTML 中,<code>&lt;textarea&gt;</code> 的值通过子节点设置;在 React 中则应该使用 <code>value</code> 代替。</p>
<p>表单组件可以通过 <code>onChange</code> 回调函数来监听组件变化。当用户做出以下交互时,<code>onChange</code> 执行并通过浏览器做出响应:</p>
<ul>
<li><code>&lt;input&gt;</code><code>&lt;textarea&gt;</code><code>value</code> 发生变化时。</li>
<li><code>&lt;input&gt;</code><code>checked</code> 状态改变时。</li>
<li><code>&lt;option&gt;</code><code>selected</code> 状态改变时。</li>
</ul>
<p>和所有 DOM 事件一样,所有的 HTML 原生组件都支持 <code>onChange</code> 属性,而且可以用来监听冒泡的 <code>change</code> 事件。</p>
<blockquote>
<p>注意:</p>
<p>对于 <code>&lt;input&gt;</code> and <code>&lt;textarea&gt;</code> <code>onChange</code> 取代 — 一般应该用来替代 — DOM内建的 <a href="https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/oninput"><code>oninput</code></a> 事件处理。</p>
</blockquote>
<h2><a class="anchor" name=""></a>受控组件 <a class="hash-link" href="#">#</a></h2>
<p>一个<em>受控</em><code>&lt;input&gt;</code> 有一个 <code>value</code> prop。渲染一个受控 <code>&lt;input&gt;</code> 会反映 <code>value</code> prop 的值。</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"> <span class="nx">render</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="o">&lt;</span><span class="nx">input</span> <span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text&quot;</span> <span class="nx">value</span><span class="o">=</span><span class="s2">&quot;Hello!&quot;</span> <span class="o">/&gt;</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<p>用户输入在被渲染的元素里将没有作用,因为 React 已经声明值为 <code>Hello!</code>。要更新 value 来响应用户输入,你可以使用 <code>onChange</code> 事件:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"> <span class="nx">getInitialState</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">{</span><span class="nx">value</span><span class="o">:</span> <span class="s1">&#39;Hello!&#39;</span><span class="p">};</span>
<span class="p">},</span>
<span class="nx">handleChange</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</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">value</span><span class="o">:</span> <span class="nx">event</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">value</span><span class="p">});</span>
<span class="p">},</span>
<span class="nx">render</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="p">(</span>
<span class="o">&lt;</span><span class="nx">input</span>
<span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text&quot;</span>
<span class="nx">value</span><span class="o">=</span><span class="p">{</span><span class="k">this</span><span class="p">.</span><span class="nx">state</span><span class="p">.</span><span class="nx">value</span><span class="p">}</span>
<span class="nx">onChange</span><span class="o">=</span><span class="p">{</span><span class="k">this</span><span class="p">.</span><span class="nx">handleChange</span><span class="p">}</span>
<span class="o">/&gt;</span>
<span class="p">);</span>
<span class="p">}</span>
</code></pre></div>
<p>在这个例子中,我们接受用户提供的值并更新 <code>&lt;input&gt;</code> 组件的 <code>value</code> prop。这个模式使实现响应或者验证用户输入的界面更容易。例如:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"> <span class="nx">handleChange</span><span class="o">:</span> <span class="kd">function</span><span class="p">(</span><span class="nx">event</span><span class="p">)</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">value</span><span class="o">:</span> <span class="nx">event</span><span class="p">.</span><span class="nx">target</span><span class="p">.</span><span class="nx">value</span><span class="p">.</span><span class="nx">substr</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">140</span><span class="p">)});</span>
<span class="p">}</span>
</code></pre></div>
<p>上面的代码接受用户输入,并截取前 140 个字符。</p>
<p>受控组件不维持一个自己的内部状态;它单纯的基于 props 渲染。</p>
<h3><a class="anchor" name=""></a>复选框与单选按钮的潜在问题 <a class="hash-link" href="#">#</a></h3>
<p>当心,在力图标准化复选框与单选按钮的变换处理中,React使用<code>click</code> 事件代替 <code>change</code> 事件。在大多数情况下它们表现的如同预期,除了在<code>change</code> handler中调用<code>preventDefault</code><code>preventDefault</code> 阻止了浏览器视觉上更新输入,即使<code>checked</code>被触发。变通的方式是要么移除<code>preventDefault</code>的调用,要么把<code>checked</code> 的触发放在一个<code>setTimeout</code>里。</p>
<h2><a class="anchor" name=""></a>不受控组件 <a class="hash-link" href="#">#</a></h2>
<p>一个没有 <code>value</code> 属性的 <code>&lt;input&gt;</code> 是一个不<em>受控</em>组件:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"> <span class="nx">render</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="o">&lt;</span><span class="nx">input</span> <span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text&quot;</span> <span class="o">/&gt;</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<p>上面的代码将渲染出一个空值的输入框,用户输入将立即反应到元素上。和受控元素一样,使用 <code>onChange</code> 事件可以监听值的变化。</p>
<p><em>不受控</em>组件维持它自己的内部状态。</p>
<h3><a class="anchor" name=""></a>默认值 <a class="hash-link" href="#">#</a></h3>
<p>如果想给组件设置一个非空的初始值,可以使用 <code>defaultValue</code> 属性。例如:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"> <span class="nx">render</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="o">&lt;</span><span class="nx">input</span> <span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text&quot;</span> <span class="nx">defaultValue</span><span class="o">=</span><span class="s2">&quot;Hello!&quot;</span> <span class="o">/&gt;</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<p>这个例子会像上面的 <strong>不受控组件</strong> 例子一样运行。</p>
<p>同样的, <code>&lt;input type=&quot;checkbox&quot;&gt;</code><code>&lt;input type=&quot;radio&quot;&gt;</code> 支持 <code>defaultChecked</code><code>&lt;select&gt;</code> 支持 <code>defaultValue</code>.</p>
<blockquote>
<p>注意:</p>
<p><code>defaultValue</code><code>defaultChecked</code> props 只能在内部渲染时被使用。 如果你需要在随后的渲染更新值, 你需要使用 <a href="#%E5%8F%97%E6%8E%A7%E7%BB%84%E4%BB%B6">受控组件</a>.</p>
</blockquote>
<h2><a class="anchor" name=""></a>高级主题 <a class="hash-link" href="#">#</a></h2><h3><a class="anchor" name=""></a>为什么使用受控组件? <a class="hash-link" href="#">#</a></h3>
<p>在 React 中使用诸如 <code>&lt;input&gt;</code> 的表单组件时,遇到了一个在传统 HTML 中没有的挑战。比如下面的代码:</p>
<div class="highlight"><pre><code class="language-html" data-lang="html"> <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">&quot;text&quot;</span> <span class="na">name=</span><span class="s">&quot;title&quot;</span> <span class="na">value=</span><span class="s">&quot;Untitled&quot;</span> <span class="nt">/&gt;</span>
</code></pre></div>
<p>它渲染一个<em>初始值</em><code>Untitled</code> 的输入框。当用户改变输入框的值时,节点的 <code>value</code> 属性( <em>property</em>)将随之变化,但是 <code>node.getAttribute(&#39;value&#39;)</code> 还是会返回初始设置的值 <code>Untitled</code>.</p>
<p>与 HTML 不同,React 组件必须在任何时间点表现视图的状态,而不仅仅是在初始化时。比如在 React 中:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"> <span class="nx">render</span><span class="o">:</span> <span class="kd">function</span><span class="p">()</span> <span class="p">{</span>
<span class="k">return</span> <span class="o">&lt;</span><span class="nx">input</span> <span class="nx">type</span><span class="o">=</span><span class="s2">&quot;text&quot;</span> <span class="nx">name</span><span class="o">=</span><span class="s2">&quot;title&quot;</span> <span class="nx">value</span><span class="o">=</span><span class="s2">&quot;Untitled&quot;</span> <span class="o">/&gt;</span><span class="p">;</span>
<span class="p">}</span>
</code></pre></div>
<p>既然这个方法描述了在任意时间点上的视图,那么文本输入框的值就应该<em>始终</em><code>Untitled</code></p>
<h3><a class="anchor" name="-lttextareagt--value-"></a>为什么 <code>&lt;textarea&gt;</code> 使用 <code>value</code> 属性? <a class="hash-link" href="#-lttextareagt--value-">#</a></h3>
<p>在 HTML 中, <code>&lt;textarea&gt;</code> 的值通常使用子节点设置:</p>
<div class="highlight"><pre><code class="language-html" data-lang="html"> <span class="c">&lt;!-- 反例:在 React 中不要这样使用! --&gt;</span>
<span class="nt">&lt;textarea</span> <span class="na">name=</span><span class="s">&quot;description&quot;</span><span class="nt">&gt;</span>This is the description.<span class="nt">&lt;/textarea&gt;</span>
</code></pre></div>
<p>对 HTML 而言,让开发者设置多行的值很容易。但是,React 是 JavaScript,没有字符串限制,可以使用 <code>\n</code> 实现换行。简言之,React 已经有 <code>value</code><code>defaultValue</code> 属性,<code>&lt;/textarea&gt;</code> 组件的子节点扮演什么角色就有点模棱两可了。基于此, 设置 <code>&lt;textarea&gt;</code> 值时不应该使用子节点:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"> <span class="o">&lt;</span><span class="nx">textarea</span> <span class="nx">name</span><span class="o">=</span><span class="s2">&quot;description&quot;</span> <span class="nx">value</span><span class="o">=</span><span class="s2">&quot;This is a description.&quot;</span> <span class="o">/&gt;</span>
</code></pre></div>
<p>如果 <em>非要</em> 使用子节点,效果和使用 <code>defaultValue</code> 一样。</p>
<h3><a class="anchor" name="-ltselectgt--value-"></a>为什么 <code>&lt;select&gt;</code> 使用 <code>value</code> 属性 <a class="hash-link" href="#-ltselectgt--value-">#</a></h3>
<p>HTML 中 <code>&lt;select&gt;</code> 通常使用 <code>&lt;option&gt;</code><code>selected</code> 属性设置选中状态;React 为了更方面的控制组件,采用以下方式代替:</p>
<div class="highlight"><pre><code class="language-javascript" data-lang="javascript"> <span class="o">&lt;</span><span class="nx">select</span> <span class="nx">value</span><span class="o">=</span><span class="s2">&quot;B&quot;</span><span class="o">&gt;</span>
<span class="o">&lt;</span><span class="nx">option</span> <span class="nx">value</span><span class="o">=</span><span class="s2">&quot;A&quot;</span><span class="o">&gt;</span><span class="nx">Apple</span><span class="o">&lt;</span><span class="err">/option&gt;</span>
<span class="o">&lt;</span><span class="nx">option</span> <span class="nx">value</span><span class="o">=</span><span class="s2">&quot;B&quot;</span><span class="o">&gt;</span><span class="nx">Banana</span><span class="o">&lt;</span><span class="err">/option&gt;</span>
<span class="o">&lt;</span><span class="nx">option</span> <span class="nx">value</span><span class="o">=</span><span class="s2">&quot;C&quot;</span><span class="o">&gt;</span><span class="nx">Cranberry</span><span class="o">&lt;</span><span class="err">/option&gt;</span>
<span class="o">&lt;</span><span class="err">/select&gt;</span>
</code></pre></div>
<p>如果是不受控组件,则使用 <code>defaultValue</code></p>
<blockquote>
<p>注意:</p>
<p><code>value</code> 属性传递一个数组,可以选中多个选项:<code>&lt;select multiple={true} value={[&#39;B&#39;, &#39;C&#39;]}&gt;</code></p>
</blockquote>
<div class="docs-prevnext">
<a class="docs-prev" href="/react/docs/transferring-props-zh-CN.html">&larr; Prev</a>
<a class="docs-next" href="/react/docs/working-with-the-browser-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/sdk.js#xfbml=1&version=v2.6&appId=623268441017527";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
docsearch({
apiKey: '36221914cce388c46d0420343e0bb32e',
indexName: 'react',
inputSelector: '#algolia-doc-search'
});
</script>
</body>
</html>