Legacy React addon for creating fragments with keys to preserve element identity during reorders
npx @tessl/cli install tessl/npm-react-addons-create-fragment@15.6.0React Addons Create Fragment is a legacy React addon that provides functionality for creating fragments with keys to preserve element identity during reorders. This utility was designed to solve a specific problem in React 15.x where reordering two sets of children required preserving component identity without adding wrapper elements.
Note: This package is deprecated and no longer maintained. Modern React versions provide better alternatives through explicit key props on array elements and React.Fragment.
npm install react-addons-create-fragmentES6:
import createFragment from 'react-addons-create-fragment';CommonJS:
const createFragment = require('react-addons-create-fragment');Browser script tag (after loading React):
<!-- development version -->
<script src="https://unpkg.com/react-addons-create-fragment/react-addons-create-fragment.js"></script>
<!-- production version -->
<script src="https://unpkg.com/react-addons-create-fragment/react-addons-create-fragment.min.js"></script>When loaded via script tag, the function is available as React.addons.createFragment:
// After loading React and the addon script
const fragment = React.addons.createFragment({
first: React.createElement('span', null, 'First'),
second: React.createElement('span', null, 'Second')
});The primary use case is creating keyed fragments to preserve element identity when reordering two sets of children:
import createFragment from 'react-addons-create-fragment';
import React from 'react';
function Swapper(props) {
let children;
if (props.swapped) {
children = createFragment({
right: props.rightChildren,
left: props.leftChildren
});
} else {
children = createFragment({
left: props.leftChildren,
right: props.rightChildren
});
}
return React.createElement('div', null, children);
}
// Usage
const leftContent = React.createElement('span', {key: 'left'}, 'Left Content');
const rightContent = React.createElement('span', {key: 'right'}, 'Right Content');
const swapper = React.createElement(Swapper, {
leftChildren: leftContent,
rightChildren: rightContent,
swapped: false
});Creates a React fragment from an object, assigning keys to preserve element identity during reorders.
/**
* Creates a React fragment from an object where keys become React keys
* and values are React elements or components.
*
* Note: The actual function is named createReactFragment internally but is
* exported as the default export, making it available as createFragment when imported.
* When loaded via script tag, it's available as React.addons.createFragment.
*
* @param {Object} object - Object with keys as React keys and values as React elements
* @returns {Array<ReactNode>} Array of React elements with proper keys assigned
*/
function createFragment(object);Parameters:
object (Object): An object where:
Return Value:
Array<ReactNode>: An opaque array of React elements with assigned keysBehavior:
Error Handling:
Usage Examples:
Basic fragment creation:
import createFragment from 'react-addons-create-fragment';
import React from 'react';
const fragment = createFragment({
header: React.createElement('h2', null, 'Title'),
content: React.createElement('p', null, 'Content'),
footer: React.createElement('small', null, 'Footer')
});
// Use as children
const container = React.createElement('div', null, fragment);Reordering scenario:
function ReorderableList(props) {
const { items, reversed } = props;
if (reversed) {
return createFragment({
second: items[1],
first: items[0]
});
} else {
return createFragment({
first: items[0],
second: items[1]
});
}
}Complex nested content:
const complexFragment = createFragment({
sidebar: React.createElement('aside', null, [
React.createElement('nav', {key: 'nav'}, 'Navigation'),
React.createElement('ul', {key: 'menu'}, 'Menu items')
]),
main: React.createElement('main', null, [
React.createElement('article', {key: 'article'}, 'Article content'),
React.createElement('section', {key: 'comments'}, 'Comments')
])
});Runtime Dependencies:
react (peer dependency) - Core React library for element creation and validationfbjs - Facebook JavaScript utilities
fbjs/lib/emptyFunction - Empty function utilitiesfbjs/lib/invariant - Assertion and error handlingfbjs/lib/warning - Development warningsobject-assign - Object assignment polyfill for older environmentsloose-envify - Environment variable transformation for builds