Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions docs/docs/10.5-clone-with-props.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
---
id: clone-with-props
title: Cloning Components
title: Cloning ReactElement
permalink: clone-with-props.html
prev: test-utils.html
next: update.html
---

In rare situations a component may want to change the props of a component that it doesn't own (like changing the `className` of a component passed as `this.props.children`). Other times it may want to make multiple copies of a component passed to it. `cloneWithProps()` makes this possible.
In rare situations a element may want to change the props of a element that it doesn't own (like changing the `className` of a element passed as `this.props.children`). Other times it may want to make multiple copies of a element passed to it. `cloneWithProps()` makes this possible.

#### `ReactComponent React.addons.cloneWithProps(ReactComponent component, object? extraProps)`
#### `ReactElement React.addons.cloneWithProps(ReactElement element, object? extraProps)`

Do a shallow copy of `component` and merge any props provided by `extraProps`. The `className` and `style` props will be merged intelligently.
Do a shallow copy of `element` and merge any props provided by `extraProps`. The `className` and `style` props will be merged intelligently.

> Note:
>
> `cloneWithProps` does not transfer `key` to the cloned component. If you wish to preserve the key, add it to the `extraProps` object:
> `cloneWithProps` does not transfer `key` to the cloned element. If you wish to preserve the key, add it to the `extraProps` object:
>
> ```js
> var clonedComponent = cloneWithProps(originalComponent, { key : originalComponent.key });
> var clonedElement = cloneWithProps(originalElement, { key : originalElement.key });
> ```
>
> `ref` is similarly not preserved.
2 changes: 1 addition & 1 deletion src/utils/cloneWithProps.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ var CHILDREN_PROP = keyOf({children: null});
* Sometimes you want to change the props of a child passed to you. Usually
* this is to add a CSS class.
*
* @param {ReactElement} child child component you'd like to clone
* @param {ReactElement} child child element you'd like to clone
* @param {object} props props you'd like to modify. className and style will be
* merged automatically.
* @return {ReactElement} a clone of child with props merged in.
Expand Down