Skip to content

Commit dd3f34f

Browse files
Update README with better explanations and descriptions
1 parent 4ce37b0 commit dd3f34f

File tree

1 file changed

+35
-22
lines changed

1 file changed

+35
-22
lines changed

README.md

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,23 @@
22

33
An HTML to React parser.
44

5+
`Parser(htmlString[, options])`
6+
7+
This parser converts an HTML string to [React element(s)](https://facebook.github.io/react/docs/glossary.html#react-elements). There is also a `replace` option if you want to swap a specific element with your own React element.
8+
9+
### Example
10+
511
```js
612
var Parser = require('html-react-parser');
7-
// Parser(htmlString[, options]);
8-
9-
var reactElement = Parser('<p>Hello, world!</p>');
10-
// ReactDOM.render(reactElement, node);
13+
var reactElement = (
14+
Parser('<p>Hello, world!</p>') // equivalent to `React.createElement('p', {}, 'Hello, world!')`
15+
);
16+
ReactDOM.render(reactElement, document.getElementById('node'));
1117
```
1218

1319
## Installation
1420

15-
```sh
16-
$ npm install html-react-parser
17-
```
21+
`npm install html-react-parser`
1822

1923
## Usage
2024

@@ -27,60 +31,69 @@ var ReactDOM = require('react-dom');
2731
// single element
2832
ReactDOM.render(
2933
Parser('<p>single</p>'),
30-
document.getElementById('single')
34+
document.getElementById('root')
3135
);
3236

3337
// adjacent elements
3438
ReactDOM.render(
39+
// the parser returns an array for adjacent elements
40+
// so make sure they are nested under a parent React element
3541
React.createElement('div', {}, Parser('<p>one</p><p>two</p>'))
36-
document.getElementById('adjacent')
42+
document.getElementById('root')
3743
);
3844

3945
// nested elements
4046
ReactDOM.render(
4147
Parser('<ul><li>inside</li></ul>'),
42-
document.getElementedById('nested')
48+
document.getElementedById('root')
4349
);
4450

4551
// attributes are preserved
4652
ReactDOM.render(
4753
Parser('<section id="foo" class="bar baz" data-qux="42">look at me now</section>'),
48-
document.getElementById('attributes')
54+
document.getElementById('root')
4955
);
5056
```
5157

5258
### Options
5359

5460
#### replace(domNode)
5561

62+
`replace` allows you to swap an element with your own React element.
63+
64+
The output of `domNode` is the same as the output from [htmlparser2.parseDOM](https://github.com/fb55/domhandler#example).
65+
5666
```js
5767
var Parser = require('html-react-parser');
5868
var React = require('react');
59-
var ReactDOM = require('react-dom');
6069

61-
var reactElement = Parser('<div><p id="main">replace me</p></div>', {
70+
var html = '<div><p id="main">replace me</p></div>';
71+
72+
var reactElement = Parser(html, {
6273
replace: function(domNode) {
74+
// example `domNode`:
75+
// { type: 'tag',
76+
// name: 'p',
77+
// attribs: { id: 'main' },
78+
// children: [],
79+
// next: null,
80+
// prev: null,
81+
// parent: [Circular] }
6382
if (domNode.attribs && domNode.attribs.id === 'main') {
6483
// element is replaced only if a valid React element is returned
6584
return React.createElement('span', { style: { fontSize: '42px' } }, 'replaced!');
6685
}
6786
}
6887
});
6988

70-
ReactDOM.render(
71-
reactElement,
72-
document.getElementById('replace')
73-
);
89+
var ReactDOM = require('react-dom');
90+
ReactDOM.render(reactElement, document.getElementById('root'));
7491
// <div><span style="font-size: 42px;">replaced!</span></div>
7592
```
7693

77-
The object properties of `domNode` is the same as the output from `require('htmlparser2').parseDOM`.
78-
7994
## Testing
8095

81-
```sh
82-
$ npm test
83-
```
96+
`npm test`
8497

8598
## License
8699

0 commit comments

Comments
 (0)