Heim  >  Artikel  >  Web-Frontend  >  Was kann das Reaktionsframework tun? Detaillierte Einführung in das React Framework (mit vollständigen Anwendungsbeispielen)

Was kann das Reaktionsframework tun? Detaillierte Einführung in das React Framework (mit vollständigen Anwendungsbeispielen)

寻∝梦
寻∝梦Original
2018-09-11 16:45:1712352Durchsuche

React ist ein JavaScript-Framework zum Erstellen „vorhersehbarer“ und „deklarativer“ Web-Benutzeroberflächen, das es Facebook ermöglicht hat, Webanwendungen schneller zu entwickeln. Werfen wir einen Blick auf den Inhalt des Artikels

1. Merkmale:

1. Beschreiben Sie einfach Ihre Anwendung zu einem beliebigen Zeitpunkt. Was Es sollte so aussehen, dass React automatisch UI-Updates verwaltet, wenn sich die Daten ändern.

2. Deklarativ Wenn sich die Daten ändern, ist „Reagieren“ konzeptionell dasselbe wie das Klicken auf F5. Tatsächlich wird nur ein Teil der Änderung aktualisiert. Bei React geht es darum, wiederverwendbare Komponenten zu erstellen. Tatsächlich erstellen Sie mit React nur Komponenten. Durch die Kapselung wird die Wiederverwendung, Prüfung und Trennung von Komponentencode erleichtert.

Darüber hinaus sind folgende Punkte zu beachten:

React ist kein MVC-Framework

React verwendet keine Vorlagen

Responsive Update ist sehr einfach

2. Hauptprinzipien

Für traditionelles Web Bei Anwendungen handelt es sich beim Betrieb von DOM im Allgemeinen um einen direkten Aktualisierungsvorgang. Wir wissen jedoch, dass DOM-Aktualisierungen normalerweise teuer sind. Um Vorgänge im DOM so weit wie möglich zu reduzieren, bietet React eine andere und leistungsstarke Möglichkeit, das DOM anstelle direkter DOM-Vorgänge zu aktualisieren. Es handelt sich um Virtual DOM, ein leichtes virtuelles DOM, bei dem es sich um ein von React abstrahiertes Objekt handelt, das beschreibt, wie das Dom aussehen und wie es präsentiert werden soll. Das reale DOM wird über dieses virtuelle DOM aktualisiert, und dieses virtuelle DOM verwaltet die Aktualisierung des realen DOM.

Warum kann es durch diese zusätzliche Ebene virtueller DOM-Operationen schneller gehen? Dies liegt daran, dass React über einen Diff-Algorithmus verfügt, der nicht garantiert, dass er sich sofort auf das reale DOM auswirkt, und dann diesen Diff-Algorithmus verwendet, um den kleinsten Wert durch Vergleich mit dem aktuellen neuen zu berechnen DOM-Darstellung mit den vorherigen Schritten zum Aktualisieren des echten DOM.

Komponenten Komponenten

Knoten im DOM-Baum werden Elemente genannt, aber hier ist es anders, Virtual DOM It heißt Komponente. Der Knoten von Virtual DOM ist eine vollständige abstrakte Komponente, die aus Komponenten besteht.

Hinweis: Die Verwendung von Komponenten ist in React äußerst wichtig, da die Existenz von Komponenten die Berechnung von DOM-Differenzen effizienter macht.

Status und Rendern

Wie React das echte DOM darstellt, wie Komponenten gerendert werden, wann gerendert wird und wie synchron aktualisiert wird. Dies erfordert ein kurzes Verständnis des Status und Rendern gerendert. Das Statusattribut enthält einige Daten, die zum Definieren der Komponente erforderlich sind. Wenn sich die Daten ändern, wird Render zum erneuten Rendern aufgerufen. Hier können die Daten nur über die bereitgestellte setState-Methode aktualisiert werden auf der offiziellen Website-Demo:

<!DOCTYPE html>
<html>
<head>
<script src="http://fb.me/react-0.12.1.js"></script>
<script src="http://fb.me/JSXTransformer-0.12.1.js"></script>
</head>
<body>
<p id="example"></p>
<script type="text/jsx">
React.render(
<h1>Hello, world!</h1>,
document.getElementById(&#39;example&#39;)
);
</script>
</body>
</html>

Es ist ganz einfach. Wenn Sie mit einem Browser darauf zugreifen, können Sie die Worte Hello, world! sehen.

JSXTransformer.js unterstützt das Parsen der JSX-Syntax. JSX ist eine Syntax, die HTML-Code in Javascript schreiben kann. Wenn es Ihnen nicht gefällt, bietet React auch native Javascript-Methoden.

(Wenn Sie mehr sehen möchten, besuchen Sie die Spalte React Reference Manual der PHP Chinese-Website, um mehr zu erfahren) Eine weitere Demo:

<html>
<head>
<title>Hello React</title>
<script src="http://fb.me/react-0.12.1.js"></script>
<script src="http://fb.me/JSXTransformer-0.12.1.js"></script>
<script src="http://code.jquery.com/jquery-1.10.0.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/showdown/0.3.1/showdown.min.js"></script>
<style>
#content{
width: 800px;
margin: 0 auto;
padding: 5px 10px;
background-color:#eee;
}
.commentBox h1{
background-color: #bbb;
}
.commentList{
border: 1px solid yellow;
padding:10px;
}
.commentList .comment{
border: 1px solid #bbb;
padding-left: 10px;
margin-bottom:10px;
}
.commentList .commentAuthor{
font-size: 20px;
}
.commentForm{
margin-top: 20px;
border: 1px solid red;
padding:10px;
}
.commentForm textarea{
width:100%;
height:50px;
margin:10px 0 10px 2px;
}
</style>
</head>
<body>
<p id="content"></p>
<script type="text/jsx">
var staticData = [
{author: "张飞", text: "我在写一条评论~!"},
{author: "关羽", text: "2货,都知道你在写的是一条评论。。"},
{author: "刘备", text: "哎,咋跟这俩逗逼结拜了!"}
];
var converter = new Showdown.converter();//markdown
/** 组件结构:
<CommentBox>
<CommentList>
<Comment />
</CommentList>
<CommentForm />
</CommentBox>
*/
//评论内容组件
var Comment = React.createClass({
render: function (){
var rawMarkup = converter.makeHtml(this.props.children.toString());
return (
<p className="comment">
<h2 className="commentAuthor">
{this.props.author}:
</h2>
<span dangerouslySetInnerHTML={{__html: rawMarkup}} />
</p>
);
}
});
//评论列表组件
var CommentList = React.createClass({
render: function (){
var commentNodes = this.props.data.map(function (comment){
return (
<Comment author={comment.author}>
{comment.text}
</Comment>
);
});
return (
<p className="commentList">
{commentNodes}
</p>
);
}
});
//评论表单组件
var CommentForm = React.createClass({
handleSubmit: function (e){
e.preventDefault();
var author = this.refs.author.getDOMNode().value.trim();
var text = this.refs.text.getDOMNode().value.trim();
if(!author || !text){
return;
}
this.props.onCommentSubmit({author: author, text: text});
this.refs.author.getDOMNode().value = &#39;&#39;;
this.refs.text.getDOMNode().value = &#39;&#39;;
return;
},
render: function (){
return (
<form className="commentForm" onSubmit={this.handleSubmit}>
<input type="text" placeholder="Your name" ref="author" /><br/>
<textarea type="text" placeholder="Say something..." ref="text" ></textarea><br/>
<input type="submit" value="Post" />
</form>
);
}
});
//评论块组件
var CommentBox = React.createClass({
loadCommentsFromServer: function (){
this.setState({data: staticData});
/*

Um der Sache willen Bequemlichkeit, ich werde hier nicht darauf eingehen. Serverseitig, Sie können es selbst ausprobieren

$.ajax({
url: this.props.url + "?_t=" + new Date().valueOf(),
dataType: &#39;json&#39;,
success: function (data){
this.setState({data: data});
}.bind(this),
error: function (xhr, status, err){
console.error(this.props.url, status, err.toString());
}.bind(this)
});
*/
},
handleCommentSubmit: function (comment){
//TODO: submit to the server and refresh the list
var comments = this.state.data;
var newComments = comments.concat([comment]);
//这里也不向后端提交了
staticData = newComments;
this.setState({data: newComments});
},
//初始化 相当于构造函数
getInitialState: function (){
return {data: []};
},
//组件添加的时候运行
componentDidMount: function (){
this.loadCommentsFromServer();
this.interval = setInterval(this.loadCommentsFromServer, this.props.pollInterval);
},
//组件删除的时候运行
componentWillUnmount: function() {
clearInterval(this.interval);
},
//调用setState或者父级组件重新渲染不同的props时才会重新调用
render: function (){
return (
<p className="commentBox">
<h1>Comments</h1>
<CommentList data={this.state.data}/>
<CommentForm onCommentSubmit={this.handleCommentSubmit} />
</p>
);
}
});
//当前目录需要有comments.json文件
//这里定义属性,如url、pollInterval,包含在props属性中
React.render(
<CommentBox url="comments.json" pollInterval="2000" />,
document.getElementById("content")
);
</script>
</body>
</html>

Wirkung:

Was kann das Reaktionsframework tun? Detaillierte Einführung in das React Framework (mit vollständigen Anwendungsbeispielen)Dieser Artikel endet hier (wenn Sie möchten Weitere Informationen finden Sie auf der chinesischen Website von PHP (React User Manual

, um mehr zu erfahren). Wenn Sie Fragen haben, können Sie unten eine Nachricht hinterlassen.

Das obige ist der detaillierte Inhalt vonWas kann das Reaktionsframework tun? Detaillierte Einführung in das React Framework (mit vollständigen Anwendungsbeispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn