React - Js Ebook Download - React Js Cookbook PDF

Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

ReactJs

Visualpath.in Page 1
ReactJs

What is React js :
React is a JavaScript library for building user interfaces. It is
maintained by Facebook, Instagram and a community of individual
developers and corporations.

A Simple Component
React components implement a render()method that takes
input data and returns what to display. This example uses an
XML-like syntax called JSX. Input data that is passed into the
component can be accessed by render() via this.props.
JSX is optional and not required to use React. Try
the Babel REPL to see the raw JavaScript code produced by
the JSX compilation step.

class HelloMessage extends React.Component {


render() {
return (
<div>
Hello {this.props.name}
</div>
);
}
}

ReactDOM.render(
<HelloMessage name="Taylor" />,
mountNode
);

Visualpath.in Page 2
ReactJs

A Stateful Component
In addition to taking input data (accessed via this.props), a
component can maintain internal state data (accessed
via this.state). When a component’s state data changes,
the rendered markup will be updated by re-
invoking render().

class Timer extends React.Component {


constructor(props) {
super(props);
this.state = { seconds: 0 };
}

tick() {
this.setState(prevState => ({
seconds: prevState.seconds + 1
}));
}

componentDidMount() {
this.interval = setInterval(() => this.tick(), 1000);
}

Visualpath.in Page 3
ReactJs

An Application
Using props and state, we can put together a small Todo
application. This example uses state to track the current list
of items as well as the text that the user has entered.
Although event handlers appear to be rendered inline, they
will be collected and implemented using event delegation.

class TodoApp extends React.Component {


constructor(props) {
super(props);
this.state = { items: [], text: '' };
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}

render() {
return (
<div>
<h3>TODO</h3>
<TodoList items={this.state.items} />
<form onSubmit={this.handleSubmit}>
<label htmlFor="new-todo">
What needs to be done?
</label>
<input
id="new-todo"
onChange={this.handleChange}
value={this.state.text}
/>
<button>

Visualpath.in Page 4
ReactJs

Add #{this.state.items.length + 1}
</button>
</form>
</div>
);
}

handleChange(e) {
this.setState({ text: e.target.value });
}

handleSubmit(e) {
e.preventDefault();
if (!this.state.text.length) {
return;
}
const newItem = {
text: this.state.text,
id: Date.now()
};
this.setState(prevState => ({
items: prevState.items.concat(newItem),
text: ''
}));
}
}

class TodoList extends React.Component {


render() {
return (
<ul>
{this.props.items.map(item => (
<li key={item.id}>{item.text}</li>
))}

Visualpath.in Page 5
ReactJs

</ul>
);
}
}

ReactDOM.render(<TodoApp />, mountNode);

A Component Using External Plugins


React is flexible and provides hooks that allow you to
interface with other libraries and frameworks. This example
uses remarkable, an external Markdown library, to convert
the <textarea>’s value in real time.

class MarkdownEditor extends React.Component {


constructor(props) {
super(props);
this.handleChange = this.handleChange.bind(this);
this.state = { value: 'Hello, **world**!' };
}

handleChange(e) {
this.setState({ value: e.target.value });
}

getRawMarkup() {
const md = new Remarkable();
return { __html: md.render(this.state.value) };
}

Visualpath.in Page 6
ReactJs

render() {
return (
<div className="MarkdownEditor">
<h3>Input</h3>
<label htmlFor="markdown-content">
Enter some markdown
</label>
<textarea
id="markdown-content"
onChange={this.handleChange}
defaultValue={this.state.value}
/>
<h3>Output</h3>
<div
className="content"
dangerouslySetInnerHTML={this.getRawMarkup()}
/>
</div>
);
}
}

ReactDOM.render(<MarkdownEditor />, mountNode);

Visualpath.in Page 7
ReactJs

For More Details:http://www.visualpath.in/ReactJs-


Training-in-Hyderabad.html

:9704455959

Address:-
Flatno:205,2ndFloor,
NILGIRIBlock,AdityaEnclave,
Ameerpet, Hyderabad-16
PhNo:+91-9704455959,9618245689
E-Mail ID : [email protected]

Visualpath.in Page 8

You might also like