成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

React表單

Coding01 / 3484人閱讀

摘要:從服務(wù)端請求數(shù)據(jù)創(chuàng)建一個文件大胖分鐘前天氣不錯啊騷胖分鐘前出去玩啊老胖分鐘前去哪玩啊從服務(wù)端請求數(shù)據(jù)為了頁面的數(shù)據(jù)和服務(wù)端的保持聯(lián)系,設(shè)置每隔五秒向服務(wù)端發(fā)生一次請求在幫頂一下事件提交表單。。。。

React表單

首先,我們需要搭建一個React環(huán)境,用來實(shí)現(xiàn)效果:

先安裝React,這里我用的并不是最新版本的,所以需要選擇一個版本:

jspm install [email protected]

安裝完成后,接著安裝一個react-dom:

jspm install [email protected]

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" 

用編輯器打開文件當(dāng)前所在的目錄:

atom ./

這里我用了一個System來導(dǎo)入app底下的mian.js:

打開main.js,在里面把css樣式引進(jìn)來:

"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}; //作為一個默認(rèn)的東西導(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};
然后頁面就會出現(xiàn)如下效果:

然后定義一個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 (
            
{this.props.author}
{this.props.date}
{this.props.children}
); } } export {Comment as default};

CommentList.js:

"use strict";


import React from "react";
import Comment from "./Comment";  //引進(jìn)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í)行一次;

最后我們就可以評論了:

在評論里面寫上東西,然后點(diǎn)擊提交,內(nèi)容就會輸出上去:

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/84282.html

相關(guān)文章

  • 翻譯 | 玩轉(zhuǎn) React 表單 —— 受控組件詳解

    摘要:受控輸入框只會顯示通過傳入的數(shù)據(jù)。例如,數(shù)組中的元素將會渲染三個單選框或復(fù)選框。屬性接收一個布爾值,用來表示組件是否應(yīng)該被渲染成選中狀態(tài)。 原文地址:React.js Forms: Controlled Components 原文作者:Loren Stewart 譯者:小 B0Y 校對者:珂珂君 本文涵蓋以下受控組件: 文本輸入框 數(shù)字輸入框 單選框 復(fù)選框 文本域 下拉...

    big_cat 評論0 收藏0
  • 一個 React Form 組件的重構(gòu)思路

    摘要:本文發(fā)布于我的博客最近對團(tuán)隊(duì)內(nèi)部組件庫中的組件進(jìn)行了重構(gòu),記錄一下思考的過程。暴露對外提供整個表單狀態(tài)的方法通過在外監(jiān)聽每次觸發(fā)的事件來獲取整個的狀態(tài)。子表單數(shù)量或類型發(fā)生變化時當(dāng)下面子組件被添加或刪除時,需要及時更新的結(jié)構(gòu)。 本文發(fā)布于 我的博客 最近對團(tuán)隊(duì)內(nèi)部 React 組件庫(ne-rc)中的 Form 組件進(jìn)行了重構(gòu),記錄一下思考的過程。 一些前置定義: 名詞 定義 ...

    Betta 評論0 收藏0
  • 快速構(gòu)建高性能表單---JSXForm

    摘要:實(shí)現(xiàn)名稱請輸入名稱類型請輸入類型語法復(fù)雜代碼量也比較龐大,說實(shí)話,到目前為止,我也沒記住過它的那些方法,最嚴(yán)重的問題是存在比較嚴(yán)重的性能問題,當(dāng)表單組件比較多的時間,頁面會卡頓。 背景 表單問題,不管是在 jQuery 時代,還是 Angular/React 時代,都永遠(yuǎn)是前端工程師們的痛,但是這又是沒辦法的事情,業(yè)務(wù)需求多種多樣,對于中后臺業(yè)務(wù)而言,表單頁面和報表頁面基本上是中后臺業(yè)...

    WalkerXu 評論0 收藏0
  • React中受控與非受控組件

    摘要:首次發(fā)表在個人博客受控組件或都要綁定一個事件每當(dāng)表單的狀態(tài)發(fā)生變化都會被寫入組件的中這種組件在中被稱為受控組件在受控組件中組件渲染出的狀態(tài)與它的或者向?qū)?yīng)通過這種方式消除了組件的局部狀態(tài)是的應(yīng)用的整個狀態(tài)可控官方同樣推薦使用受控表單組件總結(jié) 首次發(fā)表在個人博客 受控組件 { this.setState({ value: e.target.val...

    wenhai.he 評論0 收藏0
  • react組件通信實(shí)現(xiàn)表單提交

    摘要:組件通信實(shí)現(xiàn)表單提交昨晚做了一個的例子,主要實(shí)現(xiàn)的是提交表單實(shí)現(xiàn)評論的功能,在做之前先簡單介紹一下。并稱為前端大框架,就目前來看,盡管發(fā)布了也在今年月份發(fā)布了,更不在話下,大家要是想學(xué)習(xí)的話可以去官網(wǎng)學(xué)習(xí)。 react組件通信實(shí)現(xiàn)表單提交 昨晚做了一個react的例子,主要實(shí)現(xiàn)的是提交表單實(shí)現(xiàn)評論的功能,在做之前先簡單介紹一下React。 showImg(https://segment...

    LoftySoul 評論0 收藏0
  • React 奇技淫巧 - defaultValue 和虛擬 dom diff 算法實(shí)現(xiàn)表單重置

    摘要:根據(jù)虛擬的算法,只要改變節(jié)點(diǎn)的類型就能促使在的時候重新創(chuàng)建虛擬。不過這個效果依賴于虛擬算法。如果使用時候出現(xiàn)什么副作用,鄙人概不負(fù)責(zé)。此技巧在寫文章時正處于的版本 我們知道 React 的標(biāo)準(zhǔn)模式是單向數(shù)據(jù)流,而其表單項(xiàng)通常需要監(jiān)聽 onChange 事件,然后通過改變外部的 value 來回寫表單項(xiàng)的 value,譬如如下 input class App extends React....

    paulquei 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<