--- id: transferring-props-zh-CN title: 传递 Props permalink: transferring-props-zh-CN.html prev: reusable-components-zh-CN.html next: forms-zh-CN.html --- React 里有一个非常常用的模式就是对组件做一层抽象。组件对外公开一个简单的属性(Props)来实现功能,但内部细节可能有非常复杂的实现。 可以使用 [JSX 展开属性](/react/docs/jsx-spread-zh-CN.html) 来合并现有的 props 和其它值: ```javascript ``` 如果不使用 JSX,可以使用一些对象辅助方法如 ES6 的 `Object.assign` 或 Underscore `_.extend`。 ```javascript React.createElement(Component, Object.assign({}, this.props, { more: 'values' })); ``` 下面的教程介绍一些最佳实践。使用了 JSX 和 ES7 的还在试验阶段的特性。 ## 手动传递 大部分情况下你应该显式地向下传递 props。这样可以确保只公开你认为是安全的内部 API 的子集。 ```javascript var FancyCheckbox = React.createClass({ render: function() { var fancyClass = this.props.checked ? 'FancyChecked' : 'FancyUnchecked'; return (
{this.props.children}
); } }); ReactDOM.render( Hello world! , document.getElementById('example') ); ``` 但 `name` 这个属性怎么办?还有 `title`、`onMouseOver` 这些 props? ## 在 JSX 里使用 `...` 传递 > 注意: > > 在下面的例子中,`--harmony ` 标志是必须的因为这个语法是ES7的实验性语法。如果用浏览器中的JSX转换器,以 `