摘要:從服務(wù)端請求數(shù)據(jù)創(chuàng)建一個文件大胖分鐘前天氣不錯啊騷胖分鐘前出去玩啊老胖分鐘前去哪玩啊從服務(wù)端請求數(shù)據(jù)為了頁面的數(shù)據(jù)和服務(wù)端的保持聯(lián)系,設(shè)置每隔五秒向服務(wù)端發(fā)生一次請求在幫頂一下事件提交表單。。。。
React表單
首先,我們需要搭建一個React環(huán)境,用來實現(xiàn)效果:
先安裝React,這里我用的并不是最新版本的,所以需要選擇一個版本:
jspm install react@0.14.0-rcl
安裝完成后,接著安裝一個react-dom:
jspm install react-dom@0.14.0-rcl
semantic-ui,這個插件并不是react必裝的,這只是一個樣式插件,裝不裝都可以,但是我這里圖個方便就裝上了:
jspm install semantic-ui
在這里直接把semantic引入,所以需要安裝一個css插件:
jspm install css
然后用browser-sync創(chuàng)建一個服務(wù)器,用來監(jiān)視一些文件的變化:
browser-sync start --server --no-notify --files "index.html. app/**/*.js"
用編輯器打開文件當前所在的目錄:
atom ./
這里我用了一個System來導(dǎo)入app底下的mian.js:
打開main.js,在里面把css樣式引進來:
"use strict"; import "semantic-ui/semantic.min.js!";
下面是一個簡單的排版,來看一下css樣式:
創(chuàng)建一個comment文件,在文件下面創(chuàng)建一個CommentBox.js:
"use strice"; import React from "react"; //導(dǎo)入react; class CommentBox extends React.Component{ constructor(props){ spuer(props); this.state = {data:[]}; this.getComments(); // setInterval(() => this.getComments(),5000); } handleCommentSubmit(comment){ let comments = this.state.data, newComments = comments.concat(comment); this.setState({data:newComments}); } getComments(){ $.ajax({ url:this.props.url, dataType:"json", cache:false, success:comments => { this.set({data:comments}); }, error:(xhr,status,error) => { console.log(error); } }); } render(){ return (); } } export{CommentBox as default}; //作為一個默認的東西導(dǎo)出;評論
在網(wǎng)頁中顯示頁面需要在main.js里面導(dǎo)入一些文件:
- html:- main.js: "use strict" import "semantic-ui/semantic.min.css!"; import React from "react"; import ReactDOM from "react-dom"; import CommentBox from "./comment/CommentBox"; ReactDOM.render(, document.getElementById("app") );
然后在頁面中就會顯示:
接下來我們需要在定義兩個組件,來把它們連在一起:
評論列表的組件(CommentList.js):
"use strict"; import React from "react"; import Comment from "./Comment"; class CommentList extends React.Component{ render(){ let commentNodes = this.props.data.map(comment => { return({comment.text} ); }) return({commentNodes}); } } export {CommentList as default};
評論表單的組件(CommentForm.js):
"use strict"; import React from "react"; class CommentForm extends React.Component{ handleSubmit(event){ event.preventDefult(); console.log("提交表單。。。。"); let author = this.refs.author.value, text = this.refs.txte.value; console.log(author,text); this.props.onCommentSubmit({author,text,date:"剛剛"}); } render(){ return(); } } export {CommentForm as default};
然后定義一個Cmment.js的一個組件,放到CommentList.js里面,然后在從CommentList.js里面?zhèn)鬟f一些數(shù)據(jù)到Cmment.js里面:
Cmment.js:
"use strict" import React from "react"; class Comment extends React.Comment{ render (){ return (); } } export {Comment as default};{this.props.author}{this.props.date}{this.props.children}
CommentList.js:
"use strict"; import React from "react"; import Comment from "./Comment"; //引進Comment.js; class CommentList extends React.Component{ render(){ let commentNodes = this.props.data.map(comment => { return({comment.text} ); }) return({commentNodes}); } } export {CommentList as default};
注釋:這事瀏覽器會顯示一些內(nèi)容,這些內(nèi)容就是從render這個方法里面?zhèn)鬟f給CommentBox.js這個組件,然后再從CommentBox.js傳遞給CommentList.js,在CommentList.js這個組件里面循環(huán)的處理了一下每一條評論的內(nèi)容,每一次都會用一次Comment這個組件,然后把評論的內(nèi)容傳遞給Comment;控制臺就會輸出這些內(nèi)容。
從服務(wù)端請求數(shù)據(jù):
創(chuàng)建一個Comments.json文件:
[ {"author":"大胖","date":"5 分鐘前","text":"天氣不錯啊!!!"}, {"author":"騷胖","date":"3 分鐘前","text":"出去玩啊!!!"}, {"author":"老胖","date":"1 分鐘前","text":"去哪玩啊!!!"} ]
從服務(wù)端請求數(shù)據(jù):
$.ajax({ url:this.props.url, dataType:"json", cache:false, success:comments => { this.set({data:comments}); }, error:(xhr,status,error) => { console.log(error); } });
為了頁面的數(shù)據(jù)和服務(wù)端的保持聯(lián)系,設(shè)置每隔五秒向服務(wù)端發(fā)生一次請求:
constructor(props){ spuer(props); this.state = {data:[]}; this.getComments(); setInterval(() => this.getComments(),5000); } getComments(){ $.ajax({ url:this.props.url, dataType:"json", cache:false, success:comments => { this.set({data:comments}); }, error:(xhr,status,error) => { console.log(error); } }); }
在CommentForm.js幫頂一下事件:
class CommentForm extends React.Component{ handleSubmit(event){ event.preventDefult(); console.log("提交表單。。。。"); let author = this.refs.author.value, text = this.refs.txte.value; console.log(author,text); this.props.onCommentSubmit({author,text,date:"剛剛"}); } render(){ return(); } }
接下來我們可以把寫的內(nèi)容輸出到控制臺上:
把提交的內(nèi)容交給服務(wù)端處理:
在CommentBox.js上面添加一個方法:
handleCommentSubmit(comment){ let comments = this.state.data, newComments = comments.concat(comment); this.setState({data:newComments}); } //這個方法就是告訴CommentBox.js,有人提交數(shù)據(jù),就把這條數(shù)據(jù)放在這個方法里面執(zhí)行一次;
最后我們就可以評論了:
在評論里面寫上東西,然后點擊提交,內(nèi)容就會輸出上去:
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/84282.html
摘要:受控輸入框只會顯示通過傳入的數(shù)據(jù)。例如,數(shù)組中的元素將會渲染三個單選框或復(fù)選框。屬性接收一個布爾值,用來表示組件是否應(yīng)該被渲染成選中狀態(tài)。 原文地址:React.js Forms: Controlled Components 原文作者:Loren Stewart 譯者:小 B0Y 校對者:珂珂君 本文涵蓋以下受控組件: 文本輸入框 數(shù)字輸入框 單選框 復(fù)選框 文本域 下拉...
摘要:本文發(fā)布于我的博客最近對團隊內(nèi)部組件庫中的組件進行了重構(gòu),記錄一下思考的過程。暴露對外提供整個表單狀態(tài)的方法通過在外監(jiān)聽每次觸發(fā)的事件來獲取整個的狀態(tài)。子表單數(shù)量或類型發(fā)生變化時當下面子組件被添加或刪除時,需要及時更新的結(jié)構(gòu)。 本文發(fā)布于 我的博客 最近對團隊內(nèi)部 React 組件庫(ne-rc)中的 Form 組件進行了重構(gòu),記錄一下思考的過程。 一些前置定義: 名詞 定義 ...
摘要:實現(xiàn)名稱請輸入名稱類型請輸入類型語法復(fù)雜代碼量也比較龐大,說實話,到目前為止,我也沒記住過它的那些方法,最嚴重的問題是存在比較嚴重的性能問題,當表單組件比較多的時間,頁面會卡頓。 背景 表單問題,不管是在 jQuery 時代,還是 Angular/React 時代,都永遠是前端工程師們的痛,但是這又是沒辦法的事情,業(yè)務(wù)需求多種多樣,對于中后臺業(yè)務(wù)而言,表單頁面和報表頁面基本上是中后臺業(yè)...
摘要:首次發(fā)表在個人博客受控組件或都要綁定一個事件每當表單的狀態(tài)發(fā)生變化都會被寫入組件的中這種組件在中被稱為受控組件在受控組件中組件渲染出的狀態(tài)與它的或者向?qū)?yīng)通過這種方式消除了組件的局部狀態(tài)是的應(yīng)用的整個狀態(tài)可控官方同樣推薦使用受控表單組件總結(jié) 首次發(fā)表在個人博客 受控組件 { this.setState({ value: e.target.val...
摘要:組件通信實現(xiàn)表單提交昨晚做了一個的例子,主要實現(xiàn)的是提交表單實現(xiàn)評論的功能,在做之前先簡單介紹一下。并稱為前端大框架,就目前來看,盡管發(fā)布了也在今年月份發(fā)布了,更不在話下,大家要是想學(xué)習(xí)的話可以去官網(wǎng)學(xué)習(xí)。 react組件通信實現(xiàn)表單提交 昨晚做了一個react的例子,主要實現(xiàn)的是提交表單實現(xiàn)評論的功能,在做之前先簡單介紹一下React。 showImg(https://segment...
摘要:根據(jù)虛擬的算法,只要改變節(jié)點的類型就能促使在的時候重新創(chuàng)建虛擬。不過這個效果依賴于虛擬算法。如果使用時候出現(xiàn)什么副作用,鄙人概不負責(zé)。此技巧在寫文章時正處于的版本 我們知道 React 的標準模式是單向數(shù)據(jù)流,而其表單項通常需要監(jiān)聽 onChange 事件,然后通過改變外部的 value 來回寫表單項的 value,譬如如下 input class App extends React....
閱讀 3492·2021-11-12 10:36
閱讀 2869·2021-09-22 15:35
閱讀 2819·2021-09-04 16:41
閱讀 1170·2019-08-30 15:55
閱讀 3581·2019-08-29 18:43
閱讀 2078·2019-08-23 18:24
閱讀 1423·2019-08-23 18:10
閱讀 1924·2019-08-23 11:31